Stored procedures 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

我有一个尝试在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;
编译成功,

当我尝试使用:exec
p_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返回错误:
执行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返回错误:
执行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
错误,您需要在
'
之间加一个空格作为
,否则就像
创建表格部门一样,请选择…
下次创建新问题时,我不想免费回答。