sql - DB2(找到光标)无效的关键字“找到”
问题描述
我在使用 DB2 Cursor 时遇到了严重问题。当我打开它时,我不知道里面有没有记录?
而且我还在 IBM® Data Studio 版本 4.1.0.0 中编写我的存储过程
解决方案
您必须运行该FETCH
语句来检查结果集中是否有记录。但是您不能这样做,因为您将结果返回给调用者。
因此,第一个解决方案是使用,比方说,(已声明|已创建)全局临时表INSERT SELECT
检查是否插入了任何行(使用GET DIAGNOSTICS语句),然后在此(C |D)GTT,或光标2。
第二种解决方案是将两个 select 语句组合成一个,如下所示:
SELECT T.*
FROM
(
SELECT
RANK() OVER (ORDER BY NUMBER) RN
, T.*
FROM
(
SELECT 1 AS NUMBER, T1.*
FROM SYSIBM.SYSDUMMY1 T1
--WHERE 1=0
UNION ALL
SELECT 2 AS NUMBER, T2.*
FROM SYSIBM.SYSDUMMY1 T2
) T
) T
WHERE RN=1;
这个想法是对UNION
两个结果集,按它们的常量列值(NUMBER
在这种情况下)对它们进行排名,并返回具有最小排名的结果子集。
推荐阅读
- post - firebase 函数 https post - 错误:找不到模块“请求”问题
- python - 如何在没有数据或彩色图像的情况下获得清晰的图像。opencv 蟒蛇
- raspberry-pi - 为什么 'GPIO.setup(6, GPIO.IN)' 会抛出错误?
- php - Symfony/Api 平台多对多
- c++ - 是否可以在 C++ 中有类的查找表?
- javascript - 通过单击 HTML 链接将 1 添加到数据库记录
- firebase - 如何在flutter中计算200米内附近的人名单?
- angular - 无法在 html 模板中的对象上调用函数
- reactjs - 我如何通过道具来改变 react-select 组件的宽度
- c# - C# 8 理解 await 使用语法