【发布时间】:2021-06-28 09:19:13
【问题描述】:
我正在尝试在我的 RPG 程序中运行 SQL 查询,但是我无法将结果提取到我的变量(数据结构)中。
这是我迄今为止尝试过的代码。
Dsassure DS QUALIFIED
Dasnste 1a
Dasngrp 4s 0
Dasnind 5s 0
Dasnra3 1s 0
Dasnnss 13a
Dasncss 2s 0
Dasnreg 2s 0
Dasnorg 3s 0
Dasncen 3s 0
Dasnclo 1s 0
Dasnpmu 1a
Dasnnoa 25a
Dasnpra 15a
Dasnnob 25a
Dasnprb 15a
Dasnnas 2s 0
Dasnnaa 2s 0
Dasnnam 2s 0
Dasnnaj 2s 0
Dasnrng 1s 0
Dasnefs 2s 0
Dasnefa 2s 0
Dasnefm 2s 0
Dasnefj 2s 0
Dasnras 2s 0
Dasnraa 2s 0
Dasnram 2s 0
Dasnraj 2s 0
Dasnctn 1a
Dasnnmu 8s 0
Dasnst3 3a
//*-----------------------------------------------------------------
C *ENTRY PLIST
C PARM x1secu 13
C PARM x1reg 2 0
C PARM x1caisse 3
C PARM x1datea 2 0
C PARM x1datem 2 0
C PARM x1datej 2 0
C/exec sql
C+ set option commit=*none,
C+ datfmt=*iso
C/end-exec
*
/Free
//*-----------------------------------------------------------------
exec sql
DECLARE c1 CURSOR FOR
SELECT asste, asgrp, asind,
asran3, assecu, asscle,
asnom, aspre, asnom,
aspre, asnais, asnaia,
asnaim, asnaij, asrsec,
aseffs, aseffa, aseffm,
aseffj, asrads, asrada,
asradm, asradj, asctns
FROM QPURGE.SASSURE
WHERE ASSECU = :x1secu;
exec sql
OPEN c1;
If SQLSTATE = '00000';
exec sql
FETCH c1 INTO
:sassure.asnste, :sassure.asngrp, :sassure.asnind,
:sassure.asnra3, :sassure.asnnss, :sassure.asncss,
:sassure.asnraj, :sassure.asnnoa, :sassure.asnpra,
:sassure.asnnob, :sassure.asnprb, :sassure.asnnas,
:sassure.asnnaa, :sassure.asnnam, :sassure.asnnaj,
:sassure.asnrng, :sassure.asnefs, :sassure.asnefa,
:sassure.asnefm, :sassure.asnefj, :sassure.asnras,
:sassure.asnraa, :sassure.asnram, :sassure.asnctn;
exec sql
CLOSE c1;
我尝试使用数据结构作为 INTO 目标,但没有成功。
FETCH c1 INTO :sassure;
我也尝试过不使用光标,指定子字段
VALUES (SELECT asste, asgrp, asind,
asran3, assecu, asscle,
asnom, aspre, asnom,
aspre, asnais, asnaia,
asnaim, asnaij, asrsec,
aseffs, aseffa, aseffm,
aseffj, asrads, asrada,
asradm, asradj, asctns
FROM QPURGE.SASSURE
WHERE ASSECU = :x1secu) INTO
:sassure.asnste, :sassure.asngrp, :sassure.asnind,
:sassure.asnra3, :sassure.asnnss, :sassure.asncss,
:sassure.asnraj, :sassure.asnnoa, :sassure.asnpra,
:sassure.asnnob, :sassure.asnprb, :sassure.asnnas,
:sassure.asnnaa, :sassure.asnnam, :sassure.asnnaj,
:sassure.asnrng, :sassure.asnefs, :sassure.asnefa,
:sassure.asnefm, :sassure.asnefj, :sassure.asnras,
:sassure.asnraa, :sassure.asnram, :sassure.asnctn;
似乎没有任何效果,我使用调试器获取了一个示例,看看我的请求是否返回了任何东西,并且确实如此。
我真的没有这个想法..
有什么想法吗?
【问题讨论】:
-
FETCH 后 SQLCODE/SQLSTATE 的值是多少?
-
我先尝试了如何做,获取光标并指定子字段。 SQLCODE = -420, SQLSTATE = 22018
-
好吧,我发现了我的错误。我在 INTO 子句中放错了 :sassure.asnraj。它在自己之后移动了所有目标子字段..
标签: sql db2 ibm-midrange rpgle