我有以下PL / SQL:
declare i_cnt number; begin select count(1) into i_cnt from dba_tables where table_name = upper('foo') and owner = upper('bar'); if i_cnt > 0 then drop table foo; -- <--- error this line end if; end;
从中我得到这个错误.
ORA-06550: line 6,column 5: PLS-00103: Encountered the symbol "DROP" when expecting one of the following: ( begin case declare exit for goto if loop mod null pragma raise return select update while with <an identifier> <a double-quoted delimited-identifier> <a bind variable> << continue close current delete fetch lock insert open rollback savepoint set sql execute commit forall merge pipe purge
如何在程序中删除表格?
解决方法
您不能直接从PL / SQL块执行DDL语句 – 您必须使用EXECUTE IMMEDIATE:
declare i_cnt number; begin select count(1) into i_cnt from dba_tables where table_name=upper('foo') and owner=upper('bar'); if i_cnt > 0 then execute immediate 'drop table foo'; end if; end;