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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    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
    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+

  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
    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)) ;

  3. #3
    Membre averti
    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
    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.

  4. #4
    Invité de passage
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 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