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
Une procédure principale qui appelle cette sous-procédure dans laquelle j'aimerais faire ceci :
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;
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.
Serait-il possible de ne pas passer par un tableau ??
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;
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 !
Partager