加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长百科 > 正文

oracle – 当用户打消措施ORA-01013时呈现非常

发布时间:2021-03-06 19:13:32 所属栏目:站长百科 来源:网络整理
导读:我们有一个处理赏罚数据库中大量记录的进程.此刻偶然假如措施耗费的时刻过长,则用户手动打消该措施,从而抛出ORA-01013 EXCEPTION.可是,我们如故想知道在打消措施之前处理赏罚了几多记录. 我们实行天生一个在EXCEPTION WHEN OTHERS块中挪用的日记,但该块中的任何代码

我们有一个处理赏罚数据库中大量记录的进程.此刻偶然假如措施耗费的时刻过长,则用户手动打消该措施,从而抛出ORA-01013 EXCEPTION.可是,我们如故想知道在打消措施之前处理赏罚了几多记录.
我们实行天生一个在EXCEPTION WHEN OTHERS块中挪用的日记,但该块中的任何代码好像都不起浸染.我们乃至试图通过PRAGMA INIT EXCEPTION为ORA-01013提出一个破例而无济于事.代码好像到达了非常但不执行任何代码.我揣摩,因为该进程被打消,EXCEPTION块中的代码没偶然刻做任何工作而只是封锁.

知道怎样获取在打消措施之前处理赏罚的记录的计数?每次提交时我都可以实行增进记录可是想知道是否有更好的要领来实现这一点

办理要领

您可以在 autonomous transaction中记录进度.

即,通过AT将处理赏罚后的行记录在单独的事宜(具有本身的提交)中的日记表中,譬喻:

CREATE OR REPLACE 
PROCEDURE log_progress (
   p_id   IN NUMBER,p_data IN VARCHAR2
)
AS
   PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
   INSERT INTO log_table
   (
    id,logging_data
   )
   VALUES
   (
    p_id,p_data
   );
   --
   COMMIT;
EXCEPTION
   WHEN others
   THEN
      -- Log the error here
      ...
      -- Re-raise if needed
      RAISE;
END;

假如历程被打消,那么您可以查询AT记录的数据,并查找已处理赏罚的行数,由于日记表中的记录插入不会被“主”事宜回滚.

另一种要领是行使UTL_FILE包写入日记文件,然后在打消事宜时读取文件的内容.

趁便说一句,您可以将(险些全部)您想要的代码放入非常部门,假如激发该非常,它将被执行.必需有另一个缘故起因导致您的代码未被运行或被导致非常激发的事宜回滚.

http://www.exforsys.com/tutorials/oracle-11g/oracle-11g-exception-handling.html

但愿能辅佐到你…

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读