DDL语句必须用动态SQLdeclare
  i integer;
  str varchar2(100);
begin
  select count(*) into i from user_objects WHERE object_name='ADSLHMB_DKH_INDEX';
  if i > 0 then 
    str := 'drop index ADSLHMB_DKH_INDEX';
     execute immediate str;
  end if;
end;
/

解决方案 »

  1.   

    我用oracle 8.0.5, 不支持execute immediate
      

  2.   

    参考下例:DBMS_UTILITY.EXEC_DDL_STATEMENT('
    Create Table tbLsdjgda
    (
       f_Bmbm      varchar2(12)      Not Null,       --部门编码
       f_Spbm      varchar2(15)      Not Null,       --商品编码
       f_Zhjj      float    default '' ''   Not Null     --最后进价
                   ,
       Constraint pLsdjgda Primary Key(f_Bmbm,f_Spbm)      
    )');
    DBMS_UTILITY.EXEC_DDL_STATEMENT('Create Index Ind_Lsdjgda_Spbm On tbLsdjgda(f_Spbm)');DBMS_UTILITY.EXEC_DDL_STATEMENT 是ORACLE 的一个公共包,直接调用接可以了。
      

  3.   

    非常感谢大家:
    根据sasacat(傻傻猫) 的方法我解决了。