gpt4 book ai didi

SQL FETCH、游标和 RPG

转载 作者:行者123 更新时间:2023-12-01 12:46:59 28 4
gpt4 key购买 nike

我不确定我的代码有什么问题,我正在尝试创建一个 while 循环,该循环将使用在 SQL 中声明的游标获取字段(代码)中的下一个字符。目标是通过循环获取下一个匹配的字符。然后我想在循环结束时返回结果。如果没有完全匹配,目标是对代码进行部分匹配。我以前从未使用过游标,所以我尝试尽可能多地学习有关使用 fetch 和游标的知识。

EXEC SQL
SELECT field FROM file
WHERE field = :code

UNION

DECLARE UserInput CURSOR FOR
SELECT field FROM file
WHERE field LIKE '%' || :code || '%'
ORDER BY field ASC

OPEN UserInput
FETCH NEXT FROM UserInput
BEGIN
DO WHILE <> %EOF
FETCH NEXT FROM UserInput
END
CLOSE UserInput
DEALLOCATE UserInput;

最佳答案

哇...这里有很多错误...快速浏览...

  1. 您试图在错误的位置声明您的光标。
  2. %EOF() 适用于 RPG 记录级访问,您需要检查SQLCODE 或 SQLSTATE
  3. FETCH OPEN 都是SQL语句,需要在EXEC SQL
  4. DEALLOCATE 不需要
  5. 需要将游标中的行FETCH到一个RPG变量中

看看这段代码:

EXEC SQL                                            
DECLARE UserInput CURSOR FOR
SELECT field FROM file
WHERE field = :code
UNION
SELECT field FROM file
WHERE field LIKE '%' || :code || '%'
ORDER BY field ASC;
EXEC SQL
OPEN UserInput;
--really should check SQLSTATE here too!

EXEC SQL
FETCH NEXT FROM UserInput INTO :MyRpgVar;

Dow SQLSTATE = '00000';
--note 00000 = no errors or warning
-- 02000 = no data
<do somthing?>
EXEC SQL
FETCH NEXT FROM UserInput INTO :MyRpgVar;
ENDDO;

EXEC SQL
CLOSE UserInput;

我建议您阅读 RPGLE 嵌入式 SQL 编程引用部分。

关于SQL FETCH、游标和 RPG,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37262880/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com