在oracle9i中,删除某个存储过程或者更新(create or replace procedure)某个存储过程时,没有任何反应,也不报错,
有时重启计算机可以解决。过程如下:
create or replace procedure p_copytablere is
begin
insert into sysdmlreceive@dblink select sysid,syssql,0,sdate from sysdmlsend;
insert into sysdmlreceiveblob@dblink select sysid,startsql,blobcontent,endsql from sysdmlsendblob;
commit;
execute immediate 'truncate table sysdmlsend';
execute immediate 'truncate table sysdmlsendblob';
commit;
    exception   
       when others then   
       null; 
end;
过程中用到的数据库链接dblink是处于激活状态的。

解决方案 »

  1.   

    PL/SQL Developer和oracle中的Worksheet都不行
    在oracle中直接对过程编辑后,点击“应用”或“确定”也不行
      

  2.   

    过程没问题,用了好长时间了,在有些服务器上删除、更新都可以
    即使有毛病,总不会删除不了吧,是不是Oracle出什么问题,难道要重新装Oracle???
      

  3.   

       exception  
          when others then  
          null; 这句要去掉,或进行其他的处理,比如向一个日志表插入一条数据等等,否则一出现异常就转到NULL,自然“没有任何反应,也不报错”了
      

  4.   

    创建、更新或删除这个存储过程,又不是执行这个存储过程
    在PL/SQL Developer中提示一直在执行,在oracle中的Worksheet中没有任何反应
    结果是过程没有创建上去,或者更新不了,或者也删不了
      

  5.   

    在PL/SQL的打开里面选择命令文件 执行后COMMIT应该可以
      

  6.   

    zhouxu_hust ,你的方法在能够正常创建该存储过程的计算机上都不起作用
      

  7.   

    zhouxu_hust ,你看我的操作步骤对吗?
    将该存储过程保存成一个txt文件,例如1.txt,然后在PL/SQL中打开命令文件,选择1.txt,执行(F8)
    提示如下:
    SQL>
      13
      

  8.   

    你指的是更新或者创建的时候等待很长时间?如果是这个问题,应该是在你更新的时候,存储过程已经在执行了或者是有其他compile或者修改的操作,在compile或者修改都要对添加排他的dll锁,从而防止其他语句对向东的对象所修改,当procedure执行的时候,这时会对对象加上可打破的解析锁,这个时候并不影响compile或者修改操作时的加排他的dll锁,不过申请的排他dll锁会被挂起,直到这个procedure执行结束。你可以通过观察dba_ddl_locks这个系统视图来确定是不是出现这种情况。
    ====================================================================================如果你需要帮助或想和我一起学习的请联系
    联系方式QQ:370140387
    QQ群:  85837884(注明:数据库)
    电子邮件:[email protected]
    网站: http://www.inthirties.com