如何在oracle中使用sql游标属性



我打开一个名为lcaaa的sql游标。在循环游标的内部,我将sql语句执行到一个变量中。我使用sql%find来获取关于该sql语句(而不是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%find为false时,我会在该过程中出错。他们说在sql游标中找不到数据并退出循环。

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

它确实支持,错误不是因为使用sql%found,而是因为上面的select语句

来自官方网站:这里

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也是如此

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

最新更新