以下语句执行总是不成功,大家帮忙看看问题在哪里,应该如何修改(只能在语句块中执行,不能建立存储过程、包等)
DECLARE 
ictTb number(10):=0;
begin 
  select count(1) into ictTb from dba_tables where TABLE_NAME = 'XX' and OWNER = 'DATAEXP';
  if ictTb > 0 then
      drop table DATAEXP.XX;
  end if;
  create table DATAEXP.XX as select * from DATAEXP.TBL_XX;
end;
---------------------------------------------------------------------------------------
环境:
server:oracle 11g(linux)
client:winxp、oracle sql Developey

解决方案 »

  1.   

     execute 'create table DATAEXP.XX as select * from DATAEXP.TBL_XX; '
      

  2.   

    create table DATAEXP.XX as select * from DATAEXP.TBL_XX; 这句有问题
    换成
    execute immediate 'create table DATAEXP.XX as select * from DATAEXP.TBL_XX';
      

  3.   

    为什么一定需要动态执行语句:execute immediate 'create table DATAEXP.XX as select * from DATAEXP.TBL_XX';
    而直接写成drop table DATAEXP.XX; 和create table DATAEXP.XX as select * from DATAEXP.TBL_XX;却不能执行呢?