Bonjour,

je dois créer une procédure stockée dynamique qui me retourne en paramètre de sortie un curseur.

J'ai d'abord fait un test sans Sql dynamique qui fonctionne très bien :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
CREATE OR REPLACE PROCEDURE PS_GET_DETAILS_LOCALISATION
(NOM_TABLE IN VARCHAR2,
ID_TABLE IN VARCHAR2,
io_cursor OUT LP_LOCALISATION.C_ST_LOCALISATION )
AS
BEGIN
OPEN io_cursor FOR
SELECT ID, CODE, DESI FROM VW_LOCALISATION_UP
WHERE ID = TO_NUMBER(ID_TABLE);
END;
Maintenant je souhaite réaliser la même chose avec un nom de vue dynamique :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
CREATE OR REPLACE PROCEDURE PS_GET_DETAILS_LOCALISATION
(NOM_TABLE IN VARCHAR2,
ID_TABLE IN VARCHAR2,
io_cursor OUT LP_LOCALISATION.C_ST_LOCALISATION )
AS
 
vlStr	VARCHAR2(500) ;
BEGIN
vlStr := ' OPEN io_cursor FOR ' ;
vlStr := vlStr || ' SELECT ID, CODE, DESI ' ;
vlStr := vlStr || ' FROM VW_LOCALISATION_' || NOM_TABLE ;
vlStr := vlStr || ' WHERE ID = TO_NUMBER(' || ID_TABLE || ')' ;
 
?????????????????
END;
Que mettre à la place de ?????
J'ai essayé un execute immediate, DBMS_SQL.PARSE mais ça ne marche pas j'ai toujours une erreur au moment de l'exécution.
Merci par avance de votre aide.