IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQL Oracle Discussion :

Procedure dans un Select


Sujet :

SQL Oracle

  1. #1
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 17
    Par défaut Procedure dans un Select
    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

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 133
    Par défaut
    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.
    Règles du forum Langage SQL à lire par tous
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Membre averti
    Inscrit en
    Mai 2006
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 17
    Par défaut
    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 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    begin                    
    dbms_application_info.set_client_info(41);             
    end; 
     
    select * from po_headers k
    j'aimerai bien trouver un moyen qui me permet donc de faire integrer la

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    procedure (begin                    
                   dbms_application_info.set_client_info(41);             
                    end; )
    avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select * from po_headers k
    le SGBDR ORACLE 9.2.0.5

    Merci .

  4. #4
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    c'est pas plus simple de faire un truc de ce style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT * FROM po_headers_all k
    where org_id = 41;

  5. #5
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Par défaut
    une procédure non, une fonction oui !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  6. #6
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    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

  7. #7
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Par défaut
    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

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM YOURTABLE, (SELECT F(9999) FROM DUAL)
    mais même si elle est executée plus d'une fois, ça ne pose aucun problème

    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.

  8. #8
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    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

  9. #9
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Par défaut
    Citation Envoyé par orafrance Voir le message
    c'est pas plus simple de faire un truc de ce style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT * FROM po_headers_all k
    where org_id = 41;
    sans doute...

Discussions similaires

  1. Procedure stockée dans un SELECT
    Par Yusuke26 dans le forum SQL
    Réponses: 2
    Dernier message: 06/01/2011, 15h51
  2. Réponses: 0
    Dernier message: 14/10/2010, 14h47
  3. procedure dans select
    Par RSBMW dans le forum Langage SQL
    Réponses: 4
    Dernier message: 05/10/2005, 17h07
  4. [Sybase] Select dans une select loop en C
    Par Claudio dans le forum Sybase
    Réponses: 2
    Dernier message: 29/04/2003, 18h06
  5. Reprendre une procedure dans une autre ?
    Par Poisson Rouge dans le forum Langage
    Réponses: 3
    Dernier message: 17/07/2002, 22h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo