Stored procedures pl/sql过程不允许将表名/视图名作为参数传递
我有一个尝试在12c中运行的小pl/sql过程,代码如下:Stored procedures pl/sql过程不允许将表名/视图名作为参数传递,stored-procedures,plsql,oracle12c,Stored Procedures,Plsql,Oracle12c,我有一个尝试在12c中运行的小pl/sql过程,代码如下: create or replace procedure p_ins_tbl(tbl_name in varchar2) as begin execute immediate 'insert into ' ||tbl_name|| 'values(121,''asdfasdf'',6)' ; end p_ins_tbl; 编译成功, 当我尝试使用:execp_ins\u tbl(国家)执行它时 我得到的错误是: Error start
create or replace procedure p_ins_tbl(tbl_name in varchar2) as
begin
execute immediate 'insert into ' ||tbl_name|| 'values(121,''asdfasdf'',6)' ;
end p_ins_tbl;
编译成功,
当我尝试使用:execp_ins\u tbl(国家)执行它时代码>
我得到的错误是:
Error starting at line 6 in command:
exec p_ins_tbl(countries)
Error report:
ORA-06550: line 1, column 17:
PLS-00357: Table,View Or Sequence reference 'COUNTRIES' not allowed in this context
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored
06550. 00000 - "line %s, column %s:\n%s"
*Cause: Usually a PL/SQL compilation error.
*Action:
有什么原因让我得到这个吗?程序中是否有任何错误?如果有,请纠正我。提前谢谢。尝试以下方法:
execute p_ins_tbl('countries');
试试这个:
execute p_ins_tbl('countries');
在值
字之前添加一个空格,如下所示:| | tbl| u name | |值(121,'asdfasdf',6)
在值
字之前添加一个空格,如下所示:| tbl| u name | |值(121,'asdfasdfasdf',6)
创建或替换过程crt_tbl rpt(在var2,tbl|是开始执行立即“创建表”| tbl|rpt |作为选择*从“| tbl|u cpy”;结束crt_tbl_rpt当我调用此过程时,code>返回错误:执行crt\u tbl\u rpt('dept\u cpy','departments')你能告诉我为什么会这样吗?错误为:错误报告:ORA-00922:缺少或无效选项ORA-06512:在“HR.CRT”的第3行ORA-06512:在第1 00922行。00000-“缺少或无效选项”
'create table'| | | tbl| u rpt | |作为select*from'| | tbl| u cpy
错误,您需要在'
和as
之间留一个空格,否则就像创建表dept\u cpyas选择…
下次创建新问题时,我不想免费回答。创建或替换过程crt\u tbl\u rpt(varchar2中的tbl\u rpt,varchar2中的tbl\u cpy)是开始执行立即“创建表”| tbl|rpt |作为选择*从“| tbl|u cpy”;结束crt_tbl_rpt当我调用此过程时,code>返回错误:执行crt\u tbl\u rpt('dept\u cpy','departments')你能告诉我为什么会这样吗?错误为:错误报告:ORA-00922:缺少或无效选项ORA-06512:在“HR.CRT”的第3行ORA-06512:在第1 00922行。00000-“缺少或无效选项”
'create table'| | | tbl| u rpt | |作为select*from'| | tbl| u cpy
错误,您需要在'
和之间加一个空格作为,否则就像创建表格部门一样,请选择…
下次创建新问题时,我不想免费回答。