首页 > 解决方案 > oracle中如何使用sql游标属性

问题描述

我打开一个名为 lcaaa 的 sql 游标。在该循环游标内部,我将一个 sql statenent 执行到一个变量中。我使用 sql%found 来获取有关该 sql statemnent 的结果信息(不是 sql 游标)

OPEN lcaaa FOR SELECT Id, Searchvalue FROM bbb ;

LOOP
FETCH lcaaa INTO lnid, lcsearchvalue ;

EXIT  WHEN (lcaaa%NotFound);


     SELECT dd
     INTO a
     FROM aaa
        WHERE x=y 

    IF sql%found THEN

    END IF

END LOOP

当 sql%found 为 false 时,我收到该过程的错误。他们说在 sql 游标中找不到数据并退出循环。

oracle 不支持 sql 游标属性(如 sql%found)内联游标循环?

标签: oracleplsql

解决方案


它确实支持并且错误不是因为或在您使用的地方,sql%found而是因为它上面的 select 语句。带小测试的 Dbfiddle

来自官网:这里

If a SELECT INTO statement fails to return a row, PL/SQL raises the predefined exception NO_DATA_FOUND, whether you check SQL%NOTFOUND on the next line or not. A SELECT INTO statement that calls a SQL aggregate function never raises NO_DATA_FOUND, because those functions always return a value or a NULL. In such cases, SQL%NOTFOUND returns FALSE.

上面的陈述说sql%notfound这也是相同的sql%found

您总是可以在这些官方网站上阅读更多信息以获取更多信息,我只是强调了您案例中的原因。


推荐阅读