现在要向数据库中更新表、过程、函数、触发器、视图等对象,但是如果这些对象正在使用(比如要更新的过程正在执行过程中),更新会不会有问题?如果要是不能这样更新应该使用怎样的方法处理这样的情况? 先谢!

解决方案 »

  1.   

    使用动态SQL,动态的修正存储过程。
    但是,为什么要动态改变他们呢?
    我觉得只有动态改变表稍微有意义。
      

  2.   

    搂主可以在程序中先通过判断SELECT count(*) FROM V$LOCKED_OBJECT where object_id = xxxx,xxxx准备更新的对象,如果返回结果为0可以更新,如果不为0,就需要等待使用完再更新了.
      

  3.   

    wfeng7907(无风)
    是否用过这样的方法?
    我刚才试了一下,执行了个比较长的存储过程,在执行过程中查询了几次V$LOCKED_OBJECT,每次查到的结果都不一样。这样的情况是正常的吗?
      

  4.   

    V$LOCKED_OBJECT 这个表示保存当前对象锁的信息的,每次不一样也是正常的,如果在这个表里没有你当前要更新的对象,我想在这个时间应该可以开始更新的。