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 actif Avatar de Cpas2latarte
    Inscrit en
    Janvier 2006
    Messages
    237
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 237
    Points : 255
    Points
    255
    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
    Il n'y a que 2 choses infinies dans le monde :
    L'univers et la bétise humaine...
    Mais pour l'univers, je n'ai pas de certitude (A.E.)

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

    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
    Points : 7 740
    Points
    7 740
    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;
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

  3. #3
    Membre actif Avatar de Cpas2latarte
    Inscrit en
    Janvier 2006
    Messages
    237
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 237
    Points : 255
    Points
    255
    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.
    Il n'y a que 2 choses infinies dans le monde :
    L'univers et la bétise humaine...
    Mais pour l'univers, je n'ai pas de certitude (A.E.)

  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
    Points : 3 609
    Points
    3 609
    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...
    Un problème sans solution est un problème mal posé

    Merci de poser vos questions sur le forum, je ne réponds pas aux questions posées par MP.

  5. #5
    Membre actif Avatar de Cpas2latarte
    Inscrit en
    Janvier 2006
    Messages
    237
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 237
    Points : 255
    Points
    255
    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
    Il n'y a que 2 choses infinies dans le monde :
    L'univers et la bétise humaine...
    Mais pour l'univers, je n'ai pas de certitude (A.E.)

  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
    Points : 3 609
    Points
    3 609
    Par défaut
    Cela semble être davantage un problème delphi que Oracle, peut-être auras-tu une réponse dans le forum delphi.
    Un problème sans solution est un problème mal posé

    Merci de poser vos questions sur le forum, je ne réponds pas aux questions posées par MP.

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