Hello
j'aimerais savoir s'il est possible de passer un paramètre à une vue dans Oracle, et si oui avec quelle syntaxe ?
Merci
Hello
j'aimerais savoir s'il est possible de passer un paramètre à une vue dans Oracle, et si oui avec quelle syntaxe ?
Merci
Une vue est une requête SQL qui prend la forme d'une table
donc vous pouvez spécifier des paramétres lorsque vous construisez votre vue , sinon lorsque vous interroger cette vue comme une table
t'aurais pas un petit exemple de code des fois ?
Il faut passer par des variables globales déclarées dans un package spécifique
un exemple de création et de requettage sur des vues ?
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
17
18
19
20
21
22
23
24
25
26 SQL> select * from dvp ; A ---------- 1 2 50 25 SQL> create view dvp_vw as ( select * from dvp where a < 10) ; Vue créée. SQL> select * from dvp_vw ; A ---------- 1 2 SQL> select * from dvp_vw where a=1 ; A ---------- 1
et ?
j'avais oublié de préciser je suppose mon niveau en SQL sous Oracle, proche du zéro, alors variable globale de package ... j'en ai entendu parler mais....
Donc si tu pouvais me poster un exemple de code ou du moins un lien qui ne me raconte pas la bible, ce serait sympa![]()
PS : pour info j'ai cherché dans le forum avant de poster, mais pas trouvé ! recherche sur "passage parametres oracle vue":
non un exemple de passage de paramètre à une vue. Je dois faire une requête en utilisant une vue que j'aimerais rendre un petit peu dynamique en lui passant un paramètre.un exemple de création et de requettage sur des vues ?
merci
est ce que tu peut être plus précis , quoi comme paramétre ??
peux tu donner un exemple ?
Si c'est sous SQL*Plus, tu peux utiliser le caractère &, qui te permet de remplacer la chaîne suivante ce & par ce que tu veux.Envoyé par Tueur_a_gage
Ex :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 SQL> SELECT &MaDate FROM DUAL; Entrez une valeur pour madate : SYSDATE ancien 1 : SELECT &MaDate FROM DUAL nouveau 1 : SELECT SYSDATE FROM DUAL SYSDATE -------- 17/06/05
"Ce que l'on conçoit bien s'énonce clairement,
Et les mots pour le dire arrivent aisément." Nicolas Boileau
"Expliquer empêche de comprendre si cela dispense de chercher"
Quiz Oracle : venez tester vos connaissances !
La FAQ Oracle : 138 réponses à vos questions
Aidez-nous à la compléter
Tiens voilà un exemple trouvé sur le forum![]()
http://www.developpez.net/forums/vie...ht=vue+package
Voici la méthode avec un package :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 CREATE OR REPLACE PACKAGE orafrance AS param1 VARCHAR2 (30); FUNCTION get_param1 RETURN VARCHAR2; END; /Je crée ma vue :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 CREATE OR REPLACE PACKAGE BODY orafrance AS FUNCTION get_param1 RETURN VARCHAR2 AS BEGIN RETURN param1; END; END; /
Pour utiliser cette vue, il faut d'abord que j'initialise le paramétre :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 CREATE OR REPLACE VIEW v_orafrance AS SELECT * FROM all_tables WHERE table_name = UPPER (orafrance.get_param1);
Et magie :
Code : Sélectionner tout - Visualiser dans une fenêtre à part SQL> execute orafrance.param1 := 't_orafrance';
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 SQL> select table_name from v_orafrance; TABLE_NAME ------------------------------ T_ORAFRANCE
Est-ce que c'est clair ?
Envoyé par plaineR
sauf que ça ne marchait pas et apparemment ceci est impossible :
il faut passer par une fonctionCREATE OR REPLACE VIEW ma_vue AS
SELECT ma_col FROM ma_table
WHERE ma_col = list_variable.ma_variable;![]()
Oui, je sais c'est ce que tu avais indiqué à la fin de ce post (en page 2)Envoyé par orafrance
![]()
Exact
J'en profite pour répondre à la question du post cité : Une table de paramétrage n'est intéressante que si tout le monde partage les mêmes paramètres. Mais si par exemple le paramétre est le nom d'utilisateur (pour les habilitations entre autre) alors on n'a pas le choix, il faut passer par le package ainsi la valeur n'est vue que dans la session courante
![]()
Partager