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 :

Création de procédure stockée


Sujet :

SQL Procédural MySQL

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Janvier 2008
    Messages
    306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 306
    Points : 106
    Points
    106
    Par défaut Création de procédure stockée
    Bonjour,

    Pour mon premier script de procédure stockée j'écris le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    CREATE PROCEDURE proc1()
    BEGIN
    SELECT * FROM Pilote;
    END;
     
    CALL proc1()$
    Même si ce code ne "sert à rien" je veux juste voir à quoi ca ressemble et que le serveur me renvoie tout le contenu de la table Pilote quand j'appelle proc1()...

    Voici le message renvoyé par le serveur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 3
    Quel est le problème ??

  2. #2
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mars 2012
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2012
    Messages : 42
    Points : 15
    Points
    15
    Par défaut
    Je viens de lire 2-3 article sur les procédures stockée, je pense qu'il, ce qui fait conflit, c'est le ; .

    Avant de lancer ta procédure, tu dois taper
    DELIMITER | pour changer le delimiter et pouvoir utilisé ; dans ta requete.

    Vu que ton delimiter devient | tu dois taper

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    DELIMITER |
    CREATE PROCEDURE proc1()
    BEGIN
    SELECT * FROM Pilote;
    END |
     DELIMITER ; -- pour le remettre comme avant
    Je ne suis pas sur du tout, mais je pense que le problème vient de là.

    Essaie et redit nous

  3. #3
    Membre expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Points : 3 295
    Points
    3 295
    Billets dans le blog
    1
    Par défaut
    oui c'est ça...

    on change le délimiteur pour que le parser mysql n'exécute pas les instructions dans le corps de la procédure ou fonction stockée...

    et il ne faut pas oublier de le rétablir après la ou les créations faite

  4. #4
    Membre régulier
    Homme Profil pro
    Inscrit en
    Janvier 2008
    Messages
    306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 306
    Points : 106
    Points
    106
    Par défaut
    Re ^^

    Merci votre solution fonctionne bien
    Ayant un peu avancé dans mon livre j'ai ajouté des variables etc à mon code et je me retrouve avec le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    DELIMITER |
    SET @nm = 'AF'|
     
    CREATE PROCEDURE proc1()
    BEGIN
    DECLARE result VARCHAR(30);
    SELECT nom INTO result FROM Pilote WHERE compa = @nm;
    SELECT result;
    END |
     DELIMITER ;
    Quand j'appelle CALL proc1(); SQL me renvoie la colonne result avec comme valeur NULL alors que normalement en faisant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT nom FROM Pilote WHERE compa = 'AF';
    SQL me renvoie 3 résultats...

    Pourquoi ??

  5. #5
    Membre expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Points : 3 295
    Points
    3 295
    Billets dans le blog
    1
    Par défaut
    normal la syntaxe avec into ne marche que si la requête ne renvoie qu'un seul résultat...

    pas besoin de passer par une variable globale nom plus:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    DELIMITER |
     
    CREATE PROCEDURE proc1(in nm char(2))
    BEGIN
    SELECT nom FROM Pilote WHERE compa = nm;
    END |
    DELIMITER ;
     
    call proc1('af');

  6. #6
    Membre régulier
    Homme Profil pro
    Inscrit en
    Janvier 2008
    Messages
    306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 306
    Points : 106
    Points
    106
    Par défaut
    Super ^^
    Merci bcp

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

Discussions similaires

  1. Création de procédure stockée
    Par toams69 dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 20/04/2009, 21h22
  2. Création de procédure stockée
    Par smooncef dans le forum Développement
    Réponses: 6
    Dernier message: 22/04/2008, 14h26
  3. Création de procédure stocké erreur
    Par ran_hery dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 22/02/2007, 09h39
  4. Réponses: 1
    Dernier message: 26/05/2005, 12h24
  5. [Débutant] Création de procédure stockée
    Par david71 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 24/06/2004, 18h19

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