pl / sql过程不允许将表名/视图名称作为参数传递

时间:2014-08-21 13:46:47

标签: stored-procedures plsql oracle12c

我有一个小的pl / sql程序试图在12c中运行,代码如下:

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;

编译成功,

当我尝试使用:exec p_ins_tbl(countries);

执行它时

我得到错误:

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:

任何原因我得到这个?如果程序有任何错误,请纠正我......谢谢。

1 个答案:

答案 0 :(得分:4)

试试这个:

execute p_ins_tbl('countries');