`

ORA-01403: 未找到数据问题+存储过程循环跳转

阅读更多

    执行一个PL/SQL 块,总是报这个错:ORA-01403: 未找到数据问题,在网上搜索了半天,找到一个解决办法。

比较彻底的办法就是添加一个异常处理~

    另外,在其中还应用了存储循环跳转应用,很好地复习了存储过程开发!解决问题方法如下:

DECLARE
  vn_sum_old NUMBER(10);
  vn_sum_new NUMBER(10);
  vn_count NUMBER(10) := 0;

  cursor get_tcf is
  SELECT account_id AS acct_id,user_idnew AS user_id,perserve01 AS acct_item_type_id from table_a  
  where city_code='921'
  and fee_date='201107'
  and table_source = 0
  and perserve03 is null
  and disct_rule_id=211100278;
 
BEGIN
     for cur in get_tcf LOOP
        SELECT SUM(charge) INTO vn_sum_old
        FROM table_d
        WHERE acct_item_type_id =  cur.acct_item_type_id
        AND acct_id = cur.acct_id
        GROUP BY acct_id;
       
        BEGIN               --这是针对性异常处理的应用
            SELECT NVL(SUM(fee),0) INTO vn_sum_new
            FROM ucr_dtb1.table_c
            WHERE
              detail_item_code IN(
                SELECT new_item_code FROM table_b@to_accttst
                WHERE acct_item_type_id IN cur.acct_item_type_id
              )
            AND acct_id = cur.acct_id
            GROUP BY acct_id ;
        EXCEPTION
        WHEN no_data_found THEN
        --NULL;
        GOTO point1;  --这是循环跳转应用
        END;

        IF vn_sum_old = vn_sum_new THEN
           UPDATE table_a SET perserve03 = '............'
           WHERE
           perserve01 = cur.acct_item_type_id
           AND user_idnew = cur.user_id;
        END IF;
     
        IF vn_count = 100 THEN
           COMMIT;
           vn_count := 0;
        END IF;
        vn_count := vn_count+1;
       
        <<point1>>   --这是断点设置
        NULL;
       
     end loop;
    
     DBMS_OUTPUT.PUT_LINE(vn_count);

END ;
 

分享到:
评论

相关推荐

    OGG之ORA-01403案例

    OGG 之 ORA-01403 案例中,出现了复制进程 abended 状态,报告显示错误信息为 OCI Error ORA-01403: no data found。该错误的原因可能是由于表字段不一致、索引不一致或数据不一致等原因引起的。 二、解决方法 ...

    如何处理错误ORA-29275:部分多字节字符

    1. **表中的VARCHAR2字段存储了多字节字符**:如果某个字段的数据类型为VARCHAR2,并且其长度限制不足以完全容纳某些多字节字符(例如汉字),则可能导致数据截断。当尝试查询这些被截断的多字节字符时,Oracle...

    ora-01033:oracle initialization or shutdown in progress 解决方法

    这导致Oracle在启动时未能找到必要的配置文件,从而触发了ora-01033错误。 具体来说,Oracle在启动时会尝试加载现有的数据库配置信息。如果在这个过程中找不到所需的文件(如控制文件、数据文件等),就会引发错误...

    Oracle 授权 ORA-00990: 权限缺失或无效

    - **对象权限**:针对特定数据库对象,如表、视图、存储过程等。例如,`GRANT SELECT, INSERT, UPDATE, DELETE ON table_name TO user_name;` - **角色**:集合权限的实体,可以简化权限管理。`CREATE ROLE role_...

    ORA-04052p5731178_92080_WINNT.zip

    ORA-00604: 递归SQL层1出现错误 ORA-03106: 致命的双工通信协议错误 ORA-02063: 紧接着line(源于dblink) 以及 ORA-04052: 在查找远程对象时出错 ORA-00604: 递归SQL层1出现错误 ORA-03120: 双工转换例行程序:整数...

    ORA-32001:请求写入spfile,但没有使用spfile的解决方法

    ORA-32001:write to spfile requested but no spfile is in use请求写入spfile,但没有使用spfile的解决方法 在输入以下语句中报了这样的错误: SQL&gt;alter system set control_files=’/u01/app/oracle/oradata/prod/...

    oracle报错大全(珍藏版)

    这可能是由于配置错误或数据库重建过程中的问题。 #### ORA-00059: DB_FILES Parameter Value Invalid 当DB_FILES参数值无效时触发。这可能是由于参数设置超出允许范围或格式错误。 #### ORA-00060: Error During ...

    ORA-12154: TNS: 无法解析指定的连接标识符的解决方法

    ORA-12154: TNS: 无法解析指定的连接标识符的解决方法

    ORA-00060: 等待资源时检测到死锁--oracle 数据库表死锁异常

    在Oracle数据库系统中,"ORA-00060: 等待资源时检测到死锁" 是一个常见的错误提示,它表明两个或多个事务在执行过程中陷入了无法继续进行的状态,因为彼此都在等待对方释放资源。这种情况通常发生在并发操作中,比如...

    oracle特有的错误:ORA-01036:非法的变量名/编号

    在Oracle数据库系统中,"ORA-01036:非法的变量名/编号"是一个常见的错误,通常出现在PL/SQL代码或者SQL查询语句中,当你尝试使用一个不正确或者未定义的变量时,Oracle数据库会抛出这个错误。这个错误可能是由于...

    ORA-00904: "WM_CONCAT": 标识符无效

    在Oracle数据库中,"ORA-00904"是一个常见的错误代码,它表示尝试引用一个不存在或无效的标识符。在这个场景下,错误信息提到的是"WM_CONCAT"函数,这表明在Oracle 19c数据库环境中,用户尝试使用WM_CONCAT函数,但...

    CLOB 字段类型报错 ORA-01704: 文字字符串过长的解决

    在Oracle数据库中,CLOB(Character Large Object)字段类型用于存储大量的文本数据,如XML文档、长篇文章或者大量字符数据。然而,当你尝试向CLOB字段插入数据时,如果超过了Oracle规定的最大限制,就会遇到“ORA-...

    oracle12c ORA-01017: 用户名/口令无效; 登录被拒绝 解决方案

    oracle12c程序连接时异常: ORA-01017: 用户名/口令无效; 登录被拒绝 的解决方案。

    使用工具IMPDP导入数据时ORA-39002、ORA-39070错误排查

    在使用Oracle Data Pump工具IMPDP(Import Data Pump)进行数据导入的过程中,可能会遇到ORA-39002和ORA-39070等错误。本文将针对这些错误的排查方法进行详细介绍,帮助用户理解问题的原因及解决策略。 ### 错误...

    Oracle 回收站功能,彻底删除表ORA-00933:SQL command not properly ended

    此时,表`original_tableName`并未真正消失,而是被存储在回收站中。可以通过查询`USER_RECYCLEBIN`视图查看已删除的对象: ```sql SELECT object_name, type, original_name FROM user_recyclebin; ``` ##### 3. ...

    Oracle错误码大全

    ORA-00001: 违反唯一约束条件 (.) ORA-00017: 请求会话以设置跟踪事件 ORA-00018: 超出最大会话数 ORA-00019: 超出最大会话许可数 ORA-00020: 超出最大进程数 () ORA-00021: 会话附属于其它某些进程;无法转换...

    ORA-12518 TNS:监听程序无法分发客户机连接

    ORA-12518 TNS:监听程序无法分发客户机连接,在您安装好数据库后配置连接数据库的过程中遇到这类问题应该很头疼吧,不过,当您还是四处查资料来解决您遇到的另你头疼的问题时,如果不经意间看到了这则贴子,那请您升...

    WMSYS.zip解决ORA-00904:

    -- 解决ORA-00904: "WMSYS"."WM_CONCAT": 标识符无效 的文件包....... -- 解决ORA-00904: "WMSYS"."WM_CONCAT": 标识符无效 的文件包....... -- 解决ORA-00904: "WMSYS"."WM_CONCAT": 标识符无效 的文件包....... ...

    ORA-00031:标记要终止的会话

    在处理Oracle数据库时,我们经常遇到错误代码ORA-00031,它表明指定的会话已经被标记为终止。这个错误通常与数据库锁定和会话管理有关。本文将详细解析这一问题的解决方案,并提供一系列SQL语句和命令来处理和解决...

Global site tag (gtag.js) - Google Analytics