【问题标题】:ORA-01403: No Data found?ORA-01403: 未找到数据?
【发布时间】:2022-01-19 08:13:59
【问题描述】:

当我尝试执行此 PL/SQL 时,我在 for 循环中的第一次选择中遇到错误 Oracle PL/SQL - ORA-01403“未找到数据”

declare

    CURSOR
        tempRow IS SELECT t2.*
                   FROM TABLE2 t2
                            JOIN TABLE3 t3 on t3.ID = t2.ID_FB;
    updateId integer;
    B        TABLE1.A%TYPE;

BEGIN

    FOR item IN tempRow
        LOOP
            select t1.A, t1.ID
            into B, updateId
            from TABLE2 t2
                     JOIN TABLE1 t1 on t2.ID = t1.ID_R
            WHERE t2.ID = item.ID;
            -- more conditions

--- more code
            dbms_output.put_line(B);
        END LOOP;
END;

我找不到语句中的错误。

有人可以帮我吗?

【问题讨论】:

    标签: oracle plsql


    【解决方案1】:

    它表示对于通过table2table3 的连接获得的ID(在tempRow 游标中),在select 语句中连接到table2table1 中不存在行光标FOR循环。

    要检查它,请包含附加(嵌套)begin-exception-end 块并显示这样的值,例如

    BEGIN
       FOR item IN temprow
       LOOP
          BEGIN
             SELECT t1.a, t1.id
               INTO b, updateid
               FROM table2 t2 JOIN table1 t1 ON t2.id = t1.id_r
              WHERE t2.id = item.id;
    
             -- more conditions
    
             --- more code
             DBMS_OUTPUT.put_line (b);
          EXCEPTION
             WHEN NO_DATA_FOUND
             THEN
                DBMS_OUTPUT.put_line ('error on ID = ' || item.id);
          END;
       END LOOP;
    END;
    

    然后决定做什么;你会以某种方式处理它,忽略它,修复WHERE 子句,...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-27
      • 2011-11-06
      • 1970-01-01
      • 1970-01-01
      • 2019-10-22
      • 1970-01-01
      相关资源
      最近更新 更多