01403. 00000 - “未找到数据”

Posted

技术标签:

【中文标题】01403. 00000 - “未找到数据”【英文标题】:01403. 00000 - "no data found" 【发布时间】:2014-03-20 11:16:16 【问题描述】:

我正在更新我的 docmeta 表,但我得到了

ORA-01403: 未找到数据 ORA-06512: 在第 25 行 错误

下面是查询。我怎样才能摆脱这个错误?

DECLARE 
varPayTerm varchar2(300);
BEGIN
FOR X  IN(
SELECT 
  d.did, d.xproject_id
FROM 
  revisions r,
  (SELECT DDOCNAME, MAX(DID) mDID
   FROM 
    REVISIONS REV
   WHERE
    dcreatedate >='01-Jan-14'
   GROUP BY 
    DDOCNAME
  ) RevLatestID,
   docmeta d
  --temp_project p 
WHERE  
  RevLatestID.mdid = r.did
  and d.did = r.did
)  
 loop

select paymentterm 
into varPayTerm 
from project where pid = X.xproject_id and paymentterm is not null;

update docmeta 
  set xpaymentterm= varPayTerm
where did=X.dID
     and xproject_id =  X.xproject_id;
END LOOP;
END ;

【问题讨论】:

【参考方案1】:

SELECT...INTO 语句不返回任何行 如果不返回任何行是有效的,并且您想继续,您可以捕获并忽略 NO_DATA_FOUND 异常,如下所示:

   ...
    BEGIN
      SELECT ... INTO...;
    EXCEPTION
      WHEN NO_DATA_FOUND THEN
        paymentterm := 0; 
   -- or ant msg you want
    then return 'no data here';
    END;
    ...

【讨论】:

Up_One 给我 :) KKKK

以上是关于01403. 00000 - “未找到数据”的主要内容,如果未能解决你的问题,请参考以下文章

PLSQL 触发器 ORA 01403 未找到数据

ORA-01403 - 未找到数据 - 即使游标 SELECT 语句运行良好

Oracle PL/SQL - ORA-01403 使用“SELECT INTO”时“未找到数据”

触发错误:ORA-01403 插入时找不到数据

oracle执行存储过程或触发器报错:01403. 00000 -“ no data found“

oracle执行存储过程或触发器报错:01403. 00000 -“ no data found“