我有以下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;