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 Procédural MySQL Discussion :

procédures stockées: IN OUT INOUT


Sujet :

SQL Procédural MySQL

  1. #1
    Membre éprouvé
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2003
    Messages
    909
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 909
    Points : 1 014
    Points
    1 014
    Par défaut procédures stockées: IN OUT INOUT
    Bonjour voici la procédure stockée de la doc officielle de MySQL5
    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
    mysql> delimiter |
    mysql> CREATE PROCEDURE simpleproc (OUT param1 INT)
    -> BEGIN
    -> SELECT COUNT(*) INTO param1 FROM t;
    -> END
    -> |
    Query OK, 0 rows affected (0.00 sec)
    mysql> CALL simpleproc(@a)|
    Query OK, 0 rows affected (0.00 sec)
    mysql> SELECT @a|
    +------+
    | @a |
    +------+
    | 3 |
    +------+
    1 row in set (0.00 sec)
    Jusque là, tout fonctionne, j'ai adapté la procédure à ma table SQL et j'ai amélioré un peu en plaçant SELECT @a dans la procédure stockée.

    Dans la doc, il n'est pas expliqué clairement la différence entre IN OUT et INOUT pour la ligne CREATE PROCEDURE, alors j'ai fait des tests avec les trois possibilités et j'obtiens le même résultat.

    Je me doute bien qu'il existe un différence entre ces trois options. Quelles sont-elles ?

    Merci d'avance.

  2. #2
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 284
    Points : 11 737
    Points
    11 737
    Par défaut
    Si tu testes correctement ta procédure IN, tu verras qu'elle ne te renvoie pas le résultat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    CREATE PROCEDURE simpleprocIN (IN param1 INT)
    SELECT COUNT(*) INTO param1 FROM t;
    -- BEGIN, END et donc Delimiter sont inutiles avec une proc d'une seule requête
     
    SET @a=0 ;
    CALL simpleprocIN(@a) ;
    SELECT @a ;
    IN désigne un paramètre d'entrée : la proc est censée l'utilisée pour calculer un truc ou faire qqch, mais sa valeur n'est pas modifiée.

    OUT désigne un paramètre de sortie : la proc ne l'utilise pas pour calculer (ou du moins, elle ne connais pas la valeur passée), mais pour y renvoyer un résultat, comme tu le fais.

    INOUT est un paramètre d'entrée-sortie : la proc connaît sa valeur en entrée et peut la renvoyer avec une valeur modifiée.

  3. #3
    Membre éprouvé
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2003
    Messages
    909
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 909
    Points : 1 014
    Points
    1 014
    Par défaut tout est dans le jpeg
    J'ai fait une impression d'écran. La table SQL (adresse) appelée contient 4 lignes.
    Images attachées Images attachées  

  4. #4
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 284
    Points : 11 737
    Points
    11 737
    Par défaut
    Comme on le voit sur ta copie écran, tu ne vérifies pas ce que vaut @a avant l'appel à la procédure. Si tu le faisais, tu verrais qu'elle est déjà à 4 avant et n'est en fait pas affectée par la proc.

  5. #5
    Membre éprouvé
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2003
    Messages
    909
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 909
    Points : 1 014
    Points
    1 014
    Par défaut j'ai compris
    Ah la la, ces petits détails qui font toute la différence. J'aime ça !!!

    Merci pour ton aide tu es le

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] PHP.PDO Appel d’une procédure stockée MYSQL avec arguments IN, OUT et INOUT
    Par Depite dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 27/03/2015, 10h20
  2. [WD20] Oracle Procédure stockée paramètre out type structure
    Par VincentRoy dans le forum WinDev
    Réponses: 1
    Dernier message: 23/12/2014, 18h05
  3. [PHP 5.3] [Procédure stockée] Commands out of sync
    Par baddark dans le forum Langage
    Réponses: 1
    Dernier message: 20/07/2012, 15h29
  4. [PDO] Procédures stockées, paramètres OUT et multiples resultset
    Par Gusso dans le forum PHP & Base de données
    Réponses: 0
    Dernier message: 27/05/2010, 08h35
  5. Procédure stockée et OUT
    Par jeronimo83 dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 30/03/2010, 10h47

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