Bonjour,
je cherche désespérément à binder un dbms_sql.varchar2_table grace à la fonction dbms_sql.bind_variable, qui selon la doc et les specs est supposée pouvoir le faire, mais je me retrouve avec une erreur de compilation.
En gros, je parse et bind un stmt (appel d'une fonction oracle qui attend un paramètre de type NESTED TABLE => TYPE ... IS TABLE OF ... INDEX BY ...)
Je bind aussi des types simples (varchar2, number, date, ...) sans problème, et d'après la doc et les specs je devrai pouvoir binder une nested table ou un varray (j'ai aussi essayé avec un varray plutôt qu'une nested table mais sans succès).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 DECLARE l_tbl dbms_sql.varchar2_table; BEGIN -- [...] dbms_sql.parse(l_c, 'call pkg_truc.machin(:tbl)'); -- [...] dbms_sql.bind_variable(l_c, 'tbl', l_tbl); -- erreur de compilation: PLS-00306: numéro ou types d'arguments erronés dans appel à 'BIND_VARIABLE' -- [...]
Pas de problème de version, j'ai même installé un nouveau serveur avec la toute dernière 11g pour être sûr d'être en accord avec la version de la doc.
Un petit détail, dans les specs de dbms_sql, une surcharge de bind_variable existe avec le type, mais il est entre guillemets:
Est-ce que quelqu'un sait ce qu'impliquent ces guillemets?
Code : Sélectionner tout - Visualiser dans une fenêtre à part procedure bind_variable(c in integer, name in varchar2, value in "<TABLE_1>");
Aussi il existe une fonction bind_array mais ce n'est pas la même chose car elle est utilisée pour les éxécutions multiples.
Donc, quelqu'un saurait-il comment je peux binder ma nested table grace à cette fonction bind_variable?
Un grand merci d'avance.
Pierre
Partager