Bonjour,

dans le cadre de rédaction de procédures PL/SQL, j'utilise le package DBMS_SQL, et plus particulièrement la procédure DEFINE_COLUMN. Tant que j'utilise cette fonction avec des types standard, je n'ai pas de problèmes.

J'ai créé une variable de type tableau de records, dans laquelle je voudrais insérer progressivement mes données. Or, lors de l'appel à DEFINE_COLUMN, si je donne en variable un élément de record, ca ne fonctionne pas. Ci joint un peu de code, pour une meilleure compréhension :

Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
type MON_REC is RECORD(
  col1  varchar2(8),
  col2  varchar2(1));
 
type TAB_MON_REC is table of MON_REC index by binary integer;
 
t_tableau TAB_MON_REC;
 
BEGIN
[...]
    DBMS_SQL.DEFINE_COLUMN(v_cursor, 1, t_tableau(1).col1, 8);

j'ai effectué plusieurs recherches sur différents forums, mais je ne trouve guère d'exemples détaillés d'utilisation du package. J'ai donc tenté différentes syntaxes à l'aveugle (chose que je n'aime pas franchement, d'ailleurs), mais aucune ne fonctionne:
Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
    DBMS_SQL.DEFINE_COLUMN(v_cursor, 1, t_tableau.col1, 8);
    DBMS_SQL.DEFINE_COLUMN(v_cursor, 1, t_tableau(v_cpt).col1, 8);

A partir de la, deux solutions:
- soit une syntaxe correcte existe, et par manque d'expérience, ou par défaut d'interprétation, je ne la connais pas
- soit aucune syntaxe n'existe car une contrainte empêche cette affectation à un type tableau, et je passe par autant de variables temporaires que de "colonnes" dans mon type record.

En vous remerciant par avance

cordialement,