Bonjour,
Mon problème concerne la récupération des résultats depuis un curseur pour les placer dans un tableau de VARCHAR2.
Je crée une procédure dont le but est d'exécuter une requête de type Select passée en paramètre. La requête peut renvoyer un nombre quelconque de colonnes mais elles sont toutes formattées en VARCHAR2 (pré requis). La requête peut effectuée des jointures...
La requête est exécutée par la procédure dans un REF CURSOR.
Je souhaite ensuite parcourir ce curseur est stockant chaque ligne dans un tableau de VARCHAR2 : records_row pour le parcourir item par item recors_row(0) , recors_row(1)... avec une boucle FOR.
Mon code actuel est le suivant :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| PROCEDURE PROC_TEST(
IN_REQ IN VARCHAR2,
OUT_ERREUR OUT INTEGER)
IS
TYPE RET_CURSOR IS REF CURSOR;
cListe RET_CURSOR;
TYPE REQ_COLLECTION IS TABLE OF VARCHAR2(100);
records_row REQ_COLLECTION;
BEGIN
-- recuperation des elements
OPEN cListe FOR IN_REQ;
LOOP
-- pour chaque element
FETCH cListe INTO records_row;
EXIT WHEN cListe%NOTFOUND;
FOR i IN records_row.FIRST.. records_row.LAST LOOP
... |
Le problème est que je me retrouve avec une erreure de typpage :
Error(35,21): PLS-00597: expression 'RECORDS_ROW' in the INTO list is of wrong type
Mais je ne peut pas utiliser de declaration du type :
TYPE REQ_COLLECTION IS TABLE OF MY_TABLE%rowtype;
Puisque je ne connais pas ce qui est renvoyé par le Select (quelques tables et quelles colonnes sont renvoyées)
Est-il possible en PL/SQL d'exécuter une méthode quelconque et de récupérer pour chaque ligne de résultat un tableau de VARCHAR2 ou un tableau non typpé ???
Cordialement
Partager