Bonjour a vous tous,

Je travaille avec une base de donnée oracle 9i (release 9.2.0.1.0).

Le travail que je dois faire est le suivant :

J’ai plusieurs procédures dans mon schéma.

Voici un exemple de ses procédures (Pour fin d’exemple j’ai réduit au minimum le code de la procédure)

CREATE OR REPLACE PROCEDURE TEST_PRC_RETURN_CURSOR (resultset IN OUT sys_refcursor)
IS
BEGIN
OPEN resultset FOR 'SELECT 1 from dual';
EXCEPTION
WHEN OTHERS
THEN
dbms_output.put_line(sqlcode || ' ' || substr(sqlerrm,1,200));
END;

Toutes les procédures retournent un curseur (sys_refcursor) .

Chaque nom de procédure est conservé dans une table oracle.

Selon certain critères de sélection je dois lire le nom de la procédure dans la table et exécuter cette procédure.

Pour la lecture de la table je n’ai aucun problème.

J’ai un problème avec l’exécution de la procédure

Voici mon programme que j’utilise pour exécuter la procédure :

CREATE OR REPLACE PROCEDURE test3
IS
lc_curseur sys_refcursor;
L_dummy integer;
BEGIN

execute immediate ('begin TEST_PRC_RETURN_CURSOR(:t); end;') using IN OUT lc_curseur;

LOOP
FETCH lc_curseur
INTO l_dummy;
EXIT WHEN lc_curseur%NOTFOUND;
DBMS_OUTPUT.put_line ( l_dummy );
END LOOP;
EXCEPTION
WHEN OTHERS
THEN
dbms_output.put_line(sqlcode || ' ' || substr(sqlerrm,1,200));
END ;

--------------

TEST_PRC_RETURN_CURSOR est le nom de la procédure qui a été lui dans la table oracle.

Lorsque je déclenche la procédure TEST3, la procédure qui est appelé

Dynamiquement gèle. On dirait que TEST3 roule dans le vide et il ne me donne aucune erreur.

J’ai fait l’essaie de changer les procédures en fonction j’ai le même problème.

Malheureusement je n’ai pas accès au log d’oracle.

Y-a-t-il quelqu’un qui a vu un problème semblable et qui aurait une solution a mon problème.

Merci de prendre de votre temps pour résoudre mon problème