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 :

Ou enregistrer une procédure stockée ?


Sujet :

SQL Procédural MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    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
    Par défaut Ou enregistrer une procédure stockée ?
    Bonjour,

    Petite question bête ...... Où enregistréer une procedure stokée ?

    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    CREATE PROCEDURE ma_procedure (IN nombre varchar(20), OUT result bigint)
    label BEGIN
    SELECT nombre*nombre INTO result;
    END label|
    Ou dois-e enregistrer cette procédure ? (Via requete sql dans phpMyAdmin ? ??)

    Et enfin ou et comment l'appeller via CALL ma_procedure(41,@mon_resultat) ?
    (Dans mon script PHP ou où ??) ?

    Merci pour votre aide ^^ c'est la première fois que j'utilise ces procédures

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 27
    Par défaut
    Bonsoir

    Ou dois-e enregistrer cette procédure ? (Via requete sql dans phpMyAdmin ? ??)
    Tout a fait. Petite précision la procédure doit se trouver dans la base qui contient la ou les tables sur lesquelles porte ta procédure.

    Pour la lancer depuis un script php tu l'execute comme n'importe quel autre requête. Tu peu aussi la lancer directement depuis PhpMyAdmin dans la partie sql pour la tester.

  3. #3
    Membre éclairé
    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
    Par défaut
    Ben oui mais alors je ne comprends pas.

    J'ai une table article dans laquelle il y a un attribut prix; si je fais la chose suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT prix FROM article
    on me renvoi un tableau contenant les prix; si je veux enregistrer une procédure stockée effectuant l'action je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    CREATE PROCEDURE les_prix(out result FLOAT)
    BEGIN
    SELECT prix FROM article INTO result;
    END|

    et la on me répond erreur de syntaxe à la ligne 3 ?

    Où est mon erreur ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    CREATE PROCEDURE les_prix(out result FLOAT)
    label BEGIN
    SELECT prix from article INTO result;
    END label|

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 27
    Par défaut
    Il faut indiquer a Mysql que la fin de la procédure est atteinte au carractère | et non ;

    Pour cela, il faut utiliser l'ordre delimiter
    Ta procédure devrait donc ressembler à ca.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    delimiter | 
    CREATE PROCEDURE les_prix(out result FLOAT)
    BEGIN
    SELECT prix FROM article INTO result;
    END|
    delimiter ;

  5. #5
    Membre Expert

    Homme Profil pro
    SDE
    Inscrit en
    Août 2007
    Messages
    2 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : SDE

    Informations forums :
    Inscription : Août 2007
    Messages : 2 013
    Par défaut
    Attention au délimiteur avec PhpMyAdmin.
    Le mot clé DELIMITER n'est pas employé et il est nécessaire de redéfinir un délimiteur pour pas que le SGBD s'embrouille.
    Sur le popup permettant d'exécuter la requête il y a un champ ou l'on peut saisir le délimiteur.
    Dans ton cas utilise | comme délimiteur.

    Ta procédure stocké étant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    CREATE PROCEDURE les_prix(out result FLOAT)
    BEGIN
    SELECT prix FROM article INTO result;
    END|

  6. #6
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 288
    Par défaut
    En fait, quand la procédure ne comprend qu'une seule requête, le BEGIN... END est facultatif, ce qui évite tout le bins sur le délimiteur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    CREATE PROCEDURE les_prix(out result FLOAT)
    SELECT prix FROM article INTO result;

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 30/05/2011, 14h25
  2. Modifier une procédure stockée qui efface une partie d'un enregistrement.
    Par Alexandre le Grand dans le forum Développement
    Réponses: 5
    Dernier message: 12/01/2011, 04h08
  3. Réponses: 4
    Dernier message: 08/04/2010, 18h53
  4. Réponses: 1
    Dernier message: 15/10/2009, 13h46
  5. Réponses: 7
    Dernier message: 30/09/2009, 18h50

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