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 :
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;
produit :
BOB

PROCÉDURE PL/SQL TERMINÉE AVEC SUCCÈS.
Mais :
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;
produit
DECLARE
*
ERROR À LA LIGNE 1 :
ORA-06533: SUBSCRIPT BEYOND COUNT
ORA-06512: AT LINE 5
Remarque : j'ai bien trouvé une solution :
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.
mais ce n'est plus une nested table mais un associative array.

Comment faire pour assigner à une nested table un nombre quelconque de valeurs sans avoir à spécifier de taille initiale ?
Merci à vous tou(te)s