sql—执行plsql块时,如果数据库中存在数据,则返回查询结果如果找不到数据,则查询结果从异常中不返回任何内容

mnemlml8  于 2021-08-13  发布在  Java
关注(0)|答案(1)|浏览(509)
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语句。有人能告诉我哪里出了问题。

70gysomp

70gysomp1#

在游标循环结束时不会引发异常no\u data\u found:当到达数据结束时,代码只会退出循环而不会引发任何异常。即使select语句不返回任何行,这也是正确的。
通常,在运行不返回任何行的select语句时,不会引发\u data \u found,但如果select是游标循环select语句,则不会引发。

相关问题