Bonjour,
Je dois rédiger une procedure avec du sql dynamique qui génére une vue avec un SELECT où les paramtres de la clause WHERE sont précisés au moment de l'éxécution et je suis complétement bloquée est ce que quelqu'un pourrait m'aider.THANKS
Bonjour,
Je dois rédiger une procedure avec du sql dynamique qui génére une vue avec un SELECT où les paramtres de la clause WHERE sont précisés au moment de l'éxécution et je suis complétement bloquée est ce que quelqu'un pourrait m'aider.THANKS
de l'exécution de la création de la vue ou de l'ordre SELECT sur cette vue ?"... au moment de l'exécution..."
Et bien il faut constituer l'ordre de création dans une chaine de caractères et utiliser ensuite l'instruction execute immediate (qui ne fonctionne que coté serveur)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Declare sql_order Varchar2(4000) ; Begin sql_order := 'CREATE OR REPLACE VIEW ...' ; sql_order := sql_order || ' where ...' ; execute immediate sql_order ; End ;
à mon avis c'est plutôt une fonction qui retourne un REF_CURSOR qui serait adapté![]()
J'ai essaye de faire ceci et ca marche:
Mais quand je transforme STMT_STR en STMT_STR := 'CREATE VIEW COMMISSION_PAYS AS SELECT * FROM COMMISSION'
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 CREATE PROCEDURE COMMISSION_PAYS (i_PAYS IN VARCHAR2) AS STMT_STR VARCHAR2(2000); WHERE_CLAUSE VARCHAR2(200); BEGIN STMT_STR :='SELECT * FROM COMMISSION'; WHERE_CLAUSE :=' WHERE CODEPAYS =:1'; IF i_PAYS = NULL THEN WHERE_CLAUSE = NULL; END IF; EXECUTE IMMEDIATE (STMT_STR ||WHERE_CLAUSE) USING i_PAYS; END;
ça ne marche plus. est ce que quelqu'un pourrait m'aider.
thanks.
Partager