Bonjour,
Je réalise une sélection avec uniquement la clause WHERE qui change en fonction des informations saisies dans un écran. Ce qui me donne 22 possibilités de requêtes différentes aussi j'aimerai paramétrer cette requête or je travaille en RPG III et la requête fait plus de 256 caractères :
texte de la requête non paramétrée:
C/EXEC SQL
C+ DECLARE CURSOR1 CURSOR FOR
C+ SELECT
C+ A.ENRPG,
C+ A.RTOOL, VALUE(B.ITNBR,' '), VALUE(C.ITDSC,' '),
C+ A.WKCTR, A.JJDPG, A.MMDPG,
C+ A.AADPG, A.JJRPG, A.MMRPG,
C+ A.AARPG, A.STPGM, A.USPGM,
C+ VALUE(C.DNN,' '), VALUE(C.UDN,' '), VALUE(C.ENGNO,' '),
C+ VALUE(C.UUCBIM,' '),VALUE(B.OPSEQ,' '),VALUE(B.OPDSC,' ')
C+ FROM M6PGAMP A
C+ LEFT OUTER JOIN ROUTNG B
C+ ON A.RTOOL = B.RTOOL AND A.WKCTR = B.WKCTR
C+ LEFT OUTER JOIN ITEMASA C
C+ ON B.ITNBR = C.ITNBR
C+ WHERE
C+ A.WKCTR=:WKCTRE
C+ ORDER BY
C+ A.ENRPG DESC
C/END-EXEC
Tentative de paramétrage de la requête :
Pour cela, j’ai créé un tableau en carte E avec le texte de la requête
E TSQL 1 5 70
Et une DS en carte I :
IDSSQL DS
I 1 70 DSSQL1
I 71 140 DSSQL2
I 141 210 DSSQL3
I 211 280 DSSQL4
I 281 350 DSSQL5
I 351 420 DSSQL6
Ce qui donne :
C MOVE *BLANKS DSSQL
C MOVELTSQL,1 DSSQL1 P
C MOVELTSQL,2 DSSQL2 P
C MOVELTSQL,3 DSSQL3 P
C MOVELTSQL,4 DSSQL4 P
C MOVELTSQL,5 DSSQL5 P
C/EXEC SQL
C+ PREPARE SQLSRC FROM :DSSQL
C/END-EXEC
C/EXEC SQL
C+ DECLARE CURSOR200 CURSOR FOR SQLSRC
C/END-EXEC
Ce qui donne l’erreur de compilation :
SQL0312 30 996 Position 30 Variable DSSQL non définie ou non utilisable.
Comment puis-je préparer la requête ?
Y a t’il quelqu’un qui saurait m’aider ?
Partager