Bjr,
j'aimerai exeuter une procedure dans une requête Sql , comment pourrai je le faire.
merci de me donner une idée ou une astuce via laquelle je pourrai le faire .
Salutations
Version imprimable
Bjr,
j'aimerai exeuter une procedure dans une requête Sql , comment pourrai je le faire.
merci de me donner une idée ou une astuce via laquelle je pourrai le faire .
Salutations
Quel type de procédure ?
Avec quel SGBD ?
En précisant le SGBD que vous utilisez et sa version, les réponses proposées seront adaptées aux spécificités et limitations de celui-ci.
:arrow: Règles du forum Langage SQL à lire par tous
pour la procedure, c'est une procedure qui permet d'activer un paramêtre, ce dernier me permettra d'afficher les données que je cherche
le cas dans le quel je me retouve est le suivant :
j'aimerai bien trouver un moyen qui me permet donc de faire integrer laCode:
1
2
3
4
5 begin dbms_application_info.set_client_info(41); end; select * from po_headers k
avec :Code:
1
2
3 procedure (begin dbms_application_info.set_client_info(41); end; )
le SGBDR ORACLE 9.2.0.5Code:
1
2 select * from po_headers k
Merci .
c'est pas plus simple de faire un truc de ce style :
Code:
1
2 SELECT * FROM po_headers_all k where org_id = 41;
une procédure non, une fonction oui !
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 create or replace function f return number is begin dbms_application_info.set_client_info(41); return 1; end; / select * from t where f=1; A B C ---------- ---------- ---------- 1 2 3 4 select client_info from v$session where sid in(select sid from v$mystat); CLIENT_INFO ---------------------------------------------------------------- 41
est-ce que la fonction est bien exécutée qu'une seule fois et AVANT de chercher les données ? Je crains que non.
Le but ici c'est de positionner des variables d'environnement dans la session pour voir les données ad hoc dans la table (un genre de VPD)... c'est du Oracle Application ;)
quelle soit executée une ou 10'000 fois ça m'est égal. Si tu ne veux qu'elle soit executée qu'une fois tu selectionne depuis DUAL, style
mais même si elle est executée plus d'une fois, ça ne pose aucun problèmeCode:SELECT * FROM YOURTABLE, (SELECT F(9999) FROM DUAL)
Le but de cette astuce est qu'une interface qui ne fait que des SELECT sur la base ait la possibilité d'attribuer une valeur a la session, par exemple en selectionnant une ligne bidon de dual.
Ca m'est déjà arrivé d'y avoir recours lorsque le développeur avait un environment de dévelopment de Java lui permettant d'accèder aux tables mais pas aux procédures.
je pense au coté perf ;)
1 millions d'appel à la fonction ça peut devenir très couteux... mais le problème c'est surtout d'être sûr que la fonction est appelée AVANT le parsing de la requête :?