Bonjour à tous,

J'ai un petit soucis pour assigner dynamiquement des variables.
Je viens plutôt du monde web, donc je ne connais pas tous les tips d'Oracle.
En php je sais que c'est possible mais en PL-SQL....

Explications :
J'ai une procédure qui me retourne un curseur

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
CREATE OR REPLACE PROCEDURE PNVCELLTM 
(
  --mes params
, p_RECORDSET OUT sys_refcursor
) AS 
BEGIN
  OPEN p_RECORDSET FOR
    select --blabla;
 
END PNVCELLTM;
Une procédure principale qui appelle cette sous-procédure dans laquelle j'aimerais faire ceci :
La variable v_slbcelma contient de nombreuses propriétés du style(id, code, toto1, toto2, toto3, .., toto22, col1, col2, col3 ..., col12)
J'aimerais assigner dans une boucle
toto||iterator := maval etc.


Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
27
28
29
30
31
32
create or replace PROCEDURE PROCPRINCIPALE AS
  --types
  v_slbcelma SLBCELMA%ROWTYPE;
 
BEGIN
 
        /* Traitement*/
        v_iterator := 0;
        PNVCELLTM(v_numeul,v_copaul,v_dafincal,v_cursor);
        LOOP 
            FETCH v_cursor
            INTO v_currentarray(v_iterator)l; 
            EXIT WHEN v_cursor%NOTFOUND;
        END LOOP;
        CLOSE v_cursor;
 
         v_slbcelma.toto1 := v_currentarray(0);
v_slbcelma.toto2 := v_currentarray(1);
v_slbcelma.toto3  := v_currentarray(2);
v_slbcelma.toto4 := v_currentarray(3);
v_slbcelma.toto5 := v_currentarray(4);
v_slbcelma.toto6 := v_currentarray(5);
--
 
 
        MERGE INTO SLBCELMA using DUAL ON (
           --{...}
        ) 
        WHEN NOT MATCHED THEN
          INSERT VALUES v_slbcelma;
 
END BILANCELLULES;
Serait-il possible de ne pas passer par un tableau ??
Du genre

LOOP
FETCH v_cursor INTO v_slbcelma.toto||v_iterator
END LOOP;


J'ai essayé pas mal de choses comme le EXECUTE IMMEDIATE.
Mon code marche mais j'aimerais l'optimiser.

Grand merci !