如果希望执行完存储过程后将其删除掉(drop procedure),但存在多个用户用同一个账户名登录数据库运行存储过程,会不会存在先执行完的用户删除掉存储过程,造成未执行完的存储过程出现错误?
还是说oracle对于drop procedure会分析当前存储过程是否还在执行中,等最后一个用户执行完存储过程,才执行drop procedure?

解决方案 »

  1.   

    做了下测试,自己删除自己是不可行的;
    CREATE OR REPLACE PROCEDURE test
    AS
    BEGIN
      EXECUTE IMMEDIATE 'drop procedure test';END ;
      

  2.   

    又做了个测试
    建了个存储过程,在test窗口执行单步测试。然后再开个plsql,删除该过程,语句一直处于执行状态未结束。结束前面单步测试窗口后,删除语句显示执行成功。所以结论是oracle对于drop procedure会分析当前存储过程是否还在执行中,等最后一个用户执行完存储过程,才执行drop procedure。