ORA-00903:表名无效

时间:2016-12-21 12:20:17

标签: oracle plsql dynamic-sql ddl

我在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 ;

它刚刚成功运行。可能是造成此错误的原因是什么?

1 个答案:

答案 0 :(得分:3)

你必须使用这个:

drop_stmt:='drop table '||tablename; -- without ";" at the end of string
--dbms_output.put_line(drop_stmt); 
execute immediate drop_stmt;