oracle - 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)内联游标循环?
解决方案
它确实支持并且错误不是因为或在您使用的地方,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
您总是可以在这些官方网站上阅读更多信息以获取更多信息,我只是强调了您案例中的原因。
推荐阅读
- macos - 无法在 Mac 中将 PHP 7.1 升级到 7.2
- javascript - JS 移动菜单切换也会影响带有子菜单的子菜单
- django - 如何使用 redis 数据库在 django 中实现一致性哈希?
- c++ - 如何获取使用全局变量的所有函数名称?
- javascript - 如何应用多个弹出框背景颜色
- jestjs - 从导入的文件中模拟一个函数,同时检查它是否被调用
- c++ - c ++如何使用for循环查找重复项
- javascript - 如何使显示内容响应?
- sql - 如何修复在 oracle 11.2.0.1 中不返回空值行的错误
- bash - Shell脚本,如何在没有用户干预的情况下输入用户的输入