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 到底出了什么问题。

  • 相关阅读:
    css flex布局应用
    Java 中 List、HashTable、HashMap、TreeMap
    Java 面向对象的三大特征
    Java-冒泡排序算法
    单例模式- 实现方式
    Mac
    Appium DesiredCapabilities 参数设置
    Mac- appium 环境配置
    PHP安装+使用
    mac 安装protobuf,并编译
  • 原文地址:https://www.cnblogs.com/XiaoGer/p/15494156.html
Copyright © 2011-2022 走看看