Bonjour.
Je travaille sur Z/OS et j'utilise DB2.
En général, quand j'utilise une requête SELECT je mets le résultat dans un tableau, je trouve le FETCH plus clair (surtout quand j'ai une 50aine de colonnes à récupérer) et la maintenance plus simple :
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| 01 RESULTAT.
05 COL1 PIC S9(4).
05 COL2 PIC X.
*---------
EXEC SQL
DECLARE CURSEUR CURSOR FOR
SELECT COL1, COL2
FROM MATABLE
WHERE CONDITION
END-EXEC.
*---------
EXEC SQL
FETCH CURSEUR INTO :RESULTAT
END-EXEC |
Là, j'aimerais utiliser le "multi-row fetching".
Le problème, c'est que j'arrive à le mettre en place, mais pas avec un tableau.
Ca fonctionne :
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| 01 RESULTAT.
05 COL1 PIC S9(4) OCCURS 10 TIMES.
05 COL2 PIC X OCCURS 10 TIMES.
*---------
EXEC SQL
DECLARE CURSEUR CURSOR WITH ROWSET POSITIONING FOR
SELECT COL1, COL2
FROM MATABLE
WHERE CONDITION
END-EXEC.
*---------
EXEC SQL
FETCH NEXT ROWSET FROM CURSEUR FOR 10 ROWS INTO :COL1 :COL2
END-EXEC |
Je voudrais :
1 2 3
| EXEC SQL
FETCH NEXT ROWSET FROM CURSEUR FOR 10 ROWS INTO :RESULTAT
END-EXEC |
Mais la compile me renvoie un RC08 avec le message
DSNH5011I E DSNHSMUD LINE XXX COL XX HOST VARIABLE ARRAY "RESULTAT" IS EITHER NOT DEFINED OR IS NOT USABLE
J'ai essayé de déclarer RESULTAT comme un tableau, ça fait pareil...
Quelqu'un aurait une solution ?
Partager