2016-12-21 7 views
1

私はPLSQLに次のコードを持っている:ORA-00903:無効なテーブル名

ORA-00903:無効なテーブル名

ORA-06512:時における

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; 

結果行8

実行時:

drop table emp ; 

これは正常に実行されます。このエラーの原因は何ですか?

+4

識別子(など、テーブル名、カラム名とは)バインドすることはできません。実際に動的SQLを使用する必要がある場合は、何らかのバリデーションを実行した後、ハードコード(連結) –

答えて

2

あなたは、このいずれかを使用する必要があります。

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

ありがとうございました。 –