if [ $returncode -eq 0 ]
then
query_msg=`$ISQL -S $USERNAME/$PASSWD@$SERVICENAME <<EOJ
set serveroutput on;
set heading off;
set feedback off;
set linesize 150;
declare
out_value varchar2(32767);
BEGIN
for c in (SELECT MESSAGE into out_value FROM RED.ERROR_LOG
WHERE PROC = 'colour'
AND to_char(to_date(DT,'DD-MON-YY')) = to_char(to_date(sysdate,'DD-MON-YY')))
loop
out_value :=c.MESSAGE;
dbms_output.put_line(out_value);
end loop;
EXCEPTION WHEN NO_DATA_FOUND THEN
dbms_output.put_line('Nothing found');
END;
/
当找不到数据时,异常块不返回nothing found语句。有人能告诉我哪里出了问题。
1条答案
按热度按时间70gysomp1#
在游标循环结束时不会引发异常no\u data\u found:当到达数据结束时,代码只会退出循环而不会引发任何异常。即使select语句不返回任何行,这也是正确的。
通常,在运行不返回任何行的select语句时,不会引发\u data \u found,但如果select是游标循环select语句,则不会引发。