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 :

Procédure stockée avec une variable "OUT"


Sujet :

SQL Oracle

  1. #1
    Membre expérimenté Avatar de Cpas2latarte
    Inscrit en
    Janvier 2006
    Messages
    237
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 237
    Par défaut Procédure stockée avec une variable "OUT"
    Bonjour

    J’ai une application Delphi (6) fonctionnant sur une base Oracle ou SQL-Server.
    Je dois lancer une procédure stockée qui réalise un traitement dans la base et renvoi un code de retour sous la forme d’une variable « OUT ».
    Je dois ensuite, dans mon programme exploiter cette valeur de retour.
    Récupérer cette valeur est aisé pour Sql-Serveur, car un simple select de cette variable suffit.
    Mon problème est que, pour oracle je n’ai pas la moindre idée de comment faire.
    J’ai pensé à faire, une fonction qui lance la procédure et renvoi le code retour, Mais cela me semble un peu lourd.
    Quelqu’un aurait ‘il une piste

    Merci

  2. #2
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    DECLARE
    v_retour NUMBER;
    BEGIN
     MA_PROC('VAR ENTREEE', v_retour);
    END;

  3. #3
    Membre expérimenté Avatar de Cpas2latarte
    Inscrit en
    Janvier 2006
    Messages
    237
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 237
    Par défaut
    la syntaxe pour lancer la procédure ne me pose pas de problème
    Ce que je voudrais en fait c'est récupérer cette variable dans mon application.
    Pour Sql-server, je fait quelquechose du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Execute MA_PROC 'VAR ENTREEE', v_retour
    Select v_retour as valeur_retour
    cela me renvoi un jeu de resultat de 1 ligne contenant le champ "valeur_retour"
    En oracle j'aimerai faire la même chose. La seule maniere que j'ai trouvé est :
    1. lancer une requette qui execute la proc et stock la valeur dans une table "temporaire"
    2. lancer une seconde requête qui récupère cette valeur à partir de la table "temporaire"

    Mais je trouve cette manière de faire un peu lourde. Je voudrais savoir s'l y a une maniere plus simple voir plus propre.

  4. #4
    Membre Expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Par défaut
    Tu peux faire quelque chose de similaire sous Oracle :
    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
    SQL> create procedure p1 (v_res out varchar2) is
      2  begin
      3    v_res := 'RESULTAT';
      4  end;
      5  /
    Procedure created.
     
    SQL> variable result varchar2(30);
     
    SQL> exec p1 (:result);
    PL/SQL procedure successfully completed.
     
    SQL> select :result from dual;
    :RESULT
    --------------------------------
    RESULTAT
    Mais je n'ai peut-être pas compris comment tu exécutais ta requête sous SQL Server...

  5. #5
    Membre expérimenté Avatar de Cpas2latarte
    Inscrit en
    Janvier 2006
    Messages
    237
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 237
    Par défaut
    Effectivement, cette synthaxe fonntionne, mais malheuresusement, elle ne semble fontionner que dans l'environnement SQL-Plus.
    Impossible de la faire fonctionner dans le contexte de mon application Delphi (requête au traver de la librairie SQLExpress).
    Je pense que je vais rester a mon idée première, c'est a dire que je vais passer par une table "temporaire"

    Merci de vos réponses

  6. #6
    Membre Expert

    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Janvier 2004
    Messages
    2 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 862
    Par défaut
    Cela semble être davantage un problème delphi que Oracle, peut-être auras-tu une réponse dans le forum delphi.

Discussions similaires

  1. [2008R2] Procédure stockée avec une boucle sur les resultat
    Par sak_ura dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 26/02/2013, 09h23
  2. Procédure stockée avec paramètres variables
    Par Devlin111 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 04/05/2012, 13h47
  3. Faire une procédure stockée avec deux tables
    Par mister3957 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 17/03/2006, 13h54

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