Bonjour tout le monde,
Sous forms 6i, je souhaite créer un tableau de VARCHAR2 dont la taille n'est pas connue à l'avance.
D'après ce que j'ai vu et compris sur la doc officielle, une solution idéale consisterait à utiliser une nested table.
J'arrive à déclarer une nested table mais je bloque sur l'utilisation d'un constructeur vide et l'assignation d'un nombre quelconque de valeurs.
Ex :produit :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 DECLARE TYPE ROSTER IS TABLE OF VARCHAR2(15); NAMES ROSTER := ROSTER('PAT'); BEGIN NAMES(1) := 'BOB'; DBMS_OUTPUT.PUT_LINE(NAMES(1)); END;Mais :BOB
PROCÉDURE PL/SQL TERMINÉE AVEC SUCCÈS.produit
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 DECLARE TYPE ROSTER IS TABLE OF VARCHAR2(15); NAMES ROSTER; BEGIN NAMES(1) := 'BOB'; DBMS_OUTPUT.PUT_LINE(NAMES(1)); END;Remarque : j'ai bien trouvé une solution :DECLARE
*
ERROR À LA LIGNE 1 :
ORA-06533: SUBSCRIPT BEYOND COUNT
ORA-06512: AT LINE 5mais ce n'est plus une nested table mais un associative array.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 1 DECLARE 2 TYPE Roster IS TABLE OF VARCHAR2(15) INDEX BY BINARY_INTEGER; 3 names Roster; 4 BEGIN 5 names(1) := 'BOB'; 6 dbms_output.put_line(names(1)); 7* END; 8 / BOB Procédure PL/SQL terminée avec succès.
Comment faire pour assigner à une nested table un nombre quelconque de valeurs sans avoir à spécifier de taille initiale ?
Merci à vous tou(te)s
Partager