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 :
Création tableau local avec ce type :
Code : Sélectionner tout - Visualiser dans une fenêtre à part TYPE g_tab_varchar2 IS TABLE OF VARCHAR2(255) INDEX BY VARCHAR2(255);
Mon appel de procédure :
Code : Sélectionner tout - Visualiser dans une fenêtre à part l_tab_str_params g_tab_varchar2;
Avec ça, j'ai le message d'erreur à la compilation : "Les expressions doivent être de type SQL".
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;
Deuxième test :
J'ai tenté de créer un type stocké de ce style :
Mais ça ne marche pas, il n'aime pas l'INDEX.
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);
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à :
Mais il n'aime pas non plus.
Code : Sélectionner tout - Visualiser dans une fenêtre à part l_tab_str_params type_tab_varchar2 index by varchar2(255);
Auriez-vous une méthode pour exécuter ceci ?
Merci à vous
Partager