zoukankan      html  css  js  c++  java
  • Oracle 查询 ORA-01555 错误,处理方式。

    --创建临时表
    create table corrupt_lob (ID VARCHAR2(50));
    --循环检索表中错误数据并将ID插入临时表
    declare error_1578 exception;
    error_1555 exception;
    error_22922 exception;
    pragma exception_init(error_1578,-1578);
    pragma exception_init(error_1555,-1555);
    pragma exception_init(error_22922,-22922);
    n number;
    begin
    for cursor_lob in (select ID, 大字段名称 from 表名 )--括号内按时间过滤
    loop
    begin n:=dbms_lob.instr(cursor_lob.大字段名称,hextoraw('889911'));
    exception when error_1578 then insert into corrupt_lob values (cursor_lob.ID); commit;
    when error_1555 then insert into corrupt_lob values (cursor_lob.ID); commit;
    when error_22922 then insert into corrupt_lob values (cursor_lob.ID);
    commit;
    end;
    end loop;
    end;


    SELECT *,rowid FROM corrupt_lob;

    ---查询
    SELECT t.id,t.yb_settlement_value,rowid FROM PM_PAY_ACCOUNT T WHERE
    T.SETTLEMENT_TIME BETWEEN TO_DATE('2021-10-28 00:00:00','YYYY-MM-DD HH24:MI:SS') AND TO_DATE('2021-10-30 00:00:00','YYYY-MM-DD HH24:MI:SS')
    and t.id in (select id from corrupt_lob);

    ---更新为空
    update PM_PAY_ACCOUNT T
    set t.yb_settlement_value = ''
    WHERE T.SETTLEMENT_TIME BETWEEN
    TO_DATE('2021-10-28 00:00:00', 'YYYY-MM-DD HH24:MI:SS') AND
    TO_DATE('2021-10-30 00:00:00', 'YYYY-MM-DD HH24:MI:SS')
    and t.id in (select id from corrupt_lob);
    commit;

    以上步骤,创建一个临时表,检索报错的表中大字段。若发生 01555错误,将其存储到临时表中,然后set null。这是临时解决方案。具体的还要看Oracle 到底出了什么问题。

  • 相关阅读:
    xml 总结(一)数据岛,命名空间
    activiti designer 安装到 myeclipse
    activiti5.15 学习笔记
    goole网址IP
    form 中Enctype=multipart/form-data 的作用
    上传文件form表单enctype="multipart/form-data"传值解决办法(代原代码)
    淘宝初始化样式
    js闭包使用之处
    CSS Sprites
    iframe用的场景
  • 原文地址:https://www.cnblogs.com/XiaoGer/p/15494156.html
Copyright © 2011-2022 走看看