我在PLSQL
中有以下代码:
Declare
tablename varchar2(20):='emp';
drop_stmt varchar2(2000);
begin
drop_stmt:='drop table :1 ;';
--dbms_output.put_line(drop_stmt);
execute immediate drop_stmt using tablename;
end;
结果:
ORA-00903:表名无效
ORA-06512:第8行
但是当我跑步时:
drop table emp ;
它刚刚成功运行。可能是造成此错误的原因是什么?
答案 0 :(得分:3)
你必须使用这个:
drop_stmt:='drop table '||tablename; -- without ";" at the end of string
--dbms_output.put_line(drop_stmt);
execute immediate drop_stmt;