Bonjour à tous,

Je me retrouve depuis plusieurs longues et interminables heures devant un problème que je ne sais résoudre.

J'ai créé une procédure stockée dans l'un de mes packages et je voudrais suivant l'enregistrement dans ma table appeler dynamiquement la procédure stockée associée.

Pour cela, je crée le morceau de code suivant :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
ps_query := 'BEGIN :1 := ' || rec_regle.contenu_regle || '(:2 , :3 , :4, :5, :6, :7, :8, :9, cp_tCritere, 1); END;';
 
EXECUTE IMMEDIATE ps_query USING OUT num_ligne,rec_regle.id_sous_regle, rec_regle.balise_xml_deb, rec_regle.balise_xml_fin, pv_flux_xml_csv, num_ligne, pv_user_id, pv_task_id, pv_id_modele;
Le problème que je rencontre c'est au sujet de cp_tCritere qui est un tableau d'enregistrements qui crée une erreur lors du Execute Immediate en renvoyant une erreur de type : 'l'identificateur 'CP_TCRITERE' doit être déclaré' alors que ce dernier est déclaré correctement dans la procédure qui contient notamment l'appel dynamique ci dessus.

Je rajouterai que j'ai essayé de le passer dans le USING (comme pr tous les autres parametres) mais cela me renvoie une erreur du type 'instruction SQL' non valide.

Comment se fait il qu'il ne soit pas reconnu à l'interieur du bloc dynamique que je souhaite executer ?

Quelle solution proposeriez vous ?

merci d'avance...