Bonjour,

J'aimerais savoir si il est possible d'appeler une procédure dans un EXECUTE IMMEDIATE avec en paramètre un tableau de type varchar2 index by varchar2.

Voici les morceaux de code que j'ai testé :

Premier test :
Création du type dans la spec du package :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
TYPE g_tab_varchar2 IS TABLE OF VARCHAR2(255) INDEX BY VARCHAR2(255);
Création tableau local avec ce type :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
l_tab_str_params    g_tab_varchar2;
Mon appel de procédure :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
EXECUTE IMMEDIATE 'BEGIN ' || l_va_code_env || '.' || l_va_data_pkg || '.' || l_va_data_proc || '(:v_in); END;'
USING l_tab_str_params;
Avec ça, j'ai le message d'erreur à la compilation : "Les expressions doivent être de type SQL".


Deuxième test :
J'ai tenté de créer un type stocké de ce style :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
CREATE OR REPLACE TYPE type_tab_varchar2 AS TABLE OF VARCHAR2(255) INDEX BY VARCHAR2(255);
Mais ça ne marche pas, il n'aime pas l'INDEX.
J'ai testé donc de ne pas le mettre (l'INDEX) mais de le placer au niveau de ma procédure comme pour mon l_tab_str_params initialement, dans ce genre là :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
l_tab_str_params    type_tab_varchar2 index by varchar2(255);
Mais il n'aime pas non plus.

Auriez-vous une méthode pour exécuter ceci ?

Merci à vous