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 :

PB Procédure stockée avec phpMyAdmin


Sujet :

SQL Procédural MySQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2003
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2003
    Messages : 52
    Points : 59
    Points
    59
    Par défaut PB Procédure stockée avec phpMyAdmin
    Bonjour à tous,

    J'essaye de créer une procédure stockée avec phpMyAdmin sur une base MySQL v5.0.27

    Voici le code de ma procédure et la réponse de MySQL :
    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
    17
    18
    19
    20
    21
    22
    CREATE PROCEDURE ReplaceTime()
    BEGIN
    DECLARE done INT DEFAULT 0;
    DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
    DECLARE cur CURSOR FOR SELECT findex,date, time FROM matable;
    DECLARE ffindex, fdate, ftime, ftemp VARCHAR(128);
     
    OPEN cur;
     
    REPEAT
    FETCH cur INTO ffindex,date, ftime;
    IF NOT done THEN
     ftime = RIGHT(ftime,8);
     fdate = LEFT(fdate,10);
     ftemp = CONCAT(fdate,ftime);
     
    UPDATE matable SET Date = ftemp WHERE findex = ffindex;
    END IF;
    UNTIL done END REPEAT;
     
    CLOSE cur;
    END
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    #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 'INT DEFAULT 0' at line 3
    J'ai lu sur le forum que la syntaxe pour les procédure étaient liée au client, et que phpMyAdmin ne supporterai pas les ;

    Est ce que ça veut dire que c'est alors impossible avec phpMyadmin ? J'ai fait essayer ce code a une personne qui utilise mySQLquerry et il semble également avoir des erreurs de syntaxe. (Mais pas les mêmes, je vais essayer de récupérer son message d'erreur).

    Si quelqu'un à une idée sur le sujet.... merci

    A+
    C'est au pied du mur que l'on voit le mieux le mur!!!!!

  2. #2
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 281
    Points : 11 737
    Points
    11 737
    Par défaut
    plutôt que phpMyAdmin, passe par mysql_query.

    pour les erreurs résiduelles, j'en vois trois :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SET ftime = RIGHT(ftime,8);
    SETSET fdate = LEFT(fdate,10);
    SET ftemp = CONCAT(fdate,ftime);
    attention aussi à tes colonnes `date` et `time`!

    Enfin, ta procédure avec curseur serait avantageusement remplacée par une simple requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    UPDATE matable 
    SET `Date` = CONCAT(LEFT(`date`, 10), RIGHT(`time` ,8)) ;
    Antoun
    Expert Essbase, BO, SQL

    La bible d'Essbase, 2ème édition

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Août 2003
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2003
    Messages : 52
    Points : 59
    Points
    59
    Par défaut
    Ok, merci pour les tyaux.

    J'utilise désormais MySql Querry et avec la simple requête que tu m'envoie c'est bon ça marche.

    Bonne journée et encore merci.
    C'est au pied du mur que l'on voit le mieux le mur!!!!!

  4. #4
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Pour ceux qui souhaiteraient toutefois passer par phpMyAdmin, sachez qu'il s'agit d'utiliser un "DELIMITER", ce qui donnerait donc le code suivant pour la procédure précédente:

    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
    17
    18
    19
    20
    21
    22
    CREATE PROCEDURE ReplaceTime()
    BEGIN
    DECLARE done INT DEFAULT 0;
    DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
    DECLARE cur CURSOR FOR SELECT findex,date, time FROM matable;
    DECLARE ffindex, fdate, ftime, ftemp VARCHAR(128);
     
    OPEN cur;
     
    REPEAT
    FETCH cur INTO ffindex,date, ftime;
    IF NOT done THEN
     ftime = RIGHT(ftime,8);
     fdate = LEFT(fdate,10);
     ftemp = CONCAT(fdate,ftime);
     
    UPDATE matable SET Date = ftemp WHERE findex = ffindex;
    END IF;
    UNTIL done END REPEAT;
     
    CLOSE cur;
    END$$
    avec un DELIMITER défini à $$ dans la popup SQL de phpMyAdmin

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

Discussions similaires

  1. Procédures stockées avec PHpmyAdmin
    Par tchoukapi dans le forum SQL Procédural
    Réponses: 6
    Dernier message: 16/11/2005, 16h19
  2. Procédure stockée avec SELECT UNION
    Par maredami dans le forum Oracle
    Réponses: 4
    Dernier message: 07/11/2005, 11h05
  3. Procédure stockée avec serveur lié et paramètres
    Par AITOZ dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 27/10/2005, 17h51
  4. Procédure stockée avec param de sortie:marchepas av ADO
    Par Fabby69 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 14/10/2004, 12h04

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