我用plsql存储过程,就是把id这个序列删掉begin
drop sequence id
end id
但老说我编译出错,但直接执行这句语句没问题,难道oracle的存储过程不支持某些sql语句?

解决方案 »

  1.   

    alter table TableName drop column ID;
      

  2.   

    PLSQL里不支持直接的DDL操作,但允许DML;改成动态SQL:
    BEGIN
      EXECUTE IMMEDIATE 'DROP SEQUENCE ID';  --需要显式授予DROP sequence权限
    END;
    /
      

  3.   

    存储过程不支持DDL,如CREATE, DROP, ALTER等语句,只支持DML语句,如INSERT, UPDATE, SELECT, DELETE, MERGE等。但是可以用动态SQL在存储过程中实现对DDL语句的支持,就楼主的例子而言,只要执行BEGIN
      EXECUTE IMMEDIATE 'DROP SEQUENCE id';
    END;
    /
    就可以了。