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 :

Impossible de créer une procédure stockée sur MySQL: 5.0.38


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
    Développeur Web
    Inscrit en
    Janvier 2008
    Messages
    41
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2008
    Messages : 41
    Par défaut Impossible de créer une procédure stockée sur MySQL: 5.0.38
    Bonjour,
    J'ai suivi un tuto pour écrire une procédure stockée, la voici :

    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
    DROP FUNCTION IF EXISTS `update_flag()`;
    CREATE PROCEDURE `update_flag()`
    BEGIN
    DECLARE ok INT DEFAULT 0;
    DECLARE CONTINUE HANDLER FOR SQLSTATE ‘02000` SET ok = 1;
    DECLARE cur CURSOR FOR SELECT pro_url, upload_manuel FROM t_liste_url_annuaire;
    DECLARE fpro_url VARCHAR(255), fupload_manuel INT(1);
     
    OPEN cur;
     
    REPEAT
    FETCH cur INTO fpro_url, fupload_manuel;
    IF NOT ok THEN
    UPDATE t_professionnel_test SET upload_manuel = fupload_manuel WHERE pro_url = fpro_url;
    END IF;
    UNTIL ok END REPEAT;
     
    CLOSE cur;
    END
    !
    Mais voici le message d'erreur que j'ai :
    Erreur 1064 : SQLSyntax Error near "BEGIN DECLARE ok INT DEFAULT 0" at line1.
    D'avance merci pour vos réponses.

  2. #2
    Membre chevronné Avatar de jota5450
    Inscrit en
    Janvier 2006
    Messages
    263
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Janvier 2006
    Messages : 263
    Par défaut
    slt...

    t´as melange des exemples....
    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
    23
    DELIMITER $$
    
    DROP PROCEDURE IF EXISTS `update_flag` $$
    CREATE PROCEDURE `update_flag` ()
    BEGIN
    
    DECLARE ok INT DEFAULT 0;
    DECLARE fpro_url VARCHAR(255);
    declare fupload_manuel INT(1);
    DECLARE cur CURSOR FOR SELECT pro_url, upload_manuel FROM t_liste_url_annuaire;
    DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET ok = 1;
    OPEN cur;
    
    REPEAT
     FETCH cur INTO fpro_url, fupload_manuel;
     IF NOT ok THEN
     UPDATE t_professionnel_test SET upload_manuel = fupload_manuel WHERE pro_url = fpro_url;
     END IF;
     UNTIL ok END REPEAT;
    
    CLOSE cur;
    END $$
    DELIMITER ;

  3. #3
    Membre averti
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2008
    Messages
    41
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2008
    Messages : 41
    Par défaut Toujours mon probleme pour exécuter une procédure stockée
    Bonsoir jota5450 et merci de me répondre, c'est sympa :

    Je n'ai pas bien compris ce que j'ai mélangé ?
    Mon idée est de faire une update sur une table en récupérant les valeurs d'une autre dans un curseur, mon exemple traite 2 tables, j'ai juste rajouté le "DROP PROCEDURE..." dans mon éditeur SQL.
    Pourrais-tu s'il te plait m'expliquer ce qui ne va pas dans ce que j'ai fait ?
    D'avance merci.

  4. #4
    Membre chevronné Avatar de jota5450
    Inscrit en
    Janvier 2006
    Messages
    263
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Janvier 2006
    Messages : 263
    Par défaut
    slt...

    j ai pas regarder si ta procedure functionne... j´ai juste regarde cote syntaxe.

    Quand je parle que tu dois avoir melange 2 exemple...
    tu "drop" une function et tu "create" une procedure...

    Apres ta:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DECLARE CONTINUE HANDLER FOR SQLSTATE ‘02000` SET ok = 1;
    DECLARE cur CURSOR FOR SELECT pro_url, upload_manuel FROM t_liste_url_annuaire;
    c´est a l´envers... tu dois creer ton cursor avant de creer l´handler.
    sur la declaration de l´handler regarde les cotes sur le 02000.

  5. #5
    Membre averti
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2008
    Messages
    41
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2008
    Messages : 41
    Par défaut Merci Jota ça marche du feu de dieu !!!
    Super !

    Parfait, j'avais pourtant suivi le tuto à la lettre, mais c'est vrai que le code erreur de MySQL était pourtant clair (déclaration du curseur avant le handler !), donc voici ce que j'ai fait :

    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
    DELIMITER !;
    CREATE PROCEDURE `update_flag` ()
    BEGIN
    DECLARE ok INT DEFAULT 0;
    DECLARE fpro_url VARCHAR(255);
    DECLARE fupload_manuel INT(1);
    DECLARE cur CURSOR FOR SELECT pro_url, upload_manuel FROM t_liste_url_annuaire;
    DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET ok = 1;
    OPEN cur;
    REPEAT
     FETCH cur INTO fpro_url, fupload_manuel;
     IF NOT ok THEN
     UPDATE t_professionnel_test SET upload_manuel = fupload_manuel WHERE pro_url = fpro_url;
     END IF;
     UNTIL ok END REPEAT;
    CLOSE cur;
    END 
    DELIMITER !;
    et ça marche parfaitement, encore merci

  6. #6
    Candidat au Club
    Inscrit en
    Octobre 2007
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 2
    Par défaut problème avec une fonction
    moi j'ai le meme problème sauf que c'est avec des fonctions voila j'essaye de créer une fonction sur mysql le code est le suivant :

    DROP FUNCTION IF EXISTS menu_deroule;



    CREATE FUNCTION menu_deroule(id INT UNSIGNED)
    RETURNS TEXT DETERMINISTIC
    BEGIN
    DECLARE t TEXT;
    DECLARE r TEXT;
    DECLARE i INT UNSIGNED;
    SET i = id;
    SET t = "";
    SET r = "";
    WHILE i!=0 AND ISNULL(i)=0
    DO
    SELECT `child_of`, `titre` INTO i, t FROM `menu` WHERE menu.id=i;
    SET r = CONCAT(t, "/", r);
    IF i = id THEN
    SET i=0;
    END IF;
    END WHILE;

    &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
    et il me génère cette erreur :

    Erreur

    requête SQL:

    CREATE FUNCTION menu_deroule(
    id INT UNSIGNED
    ) RETURNS TEXTDETERMINISTIC BEGIN DECLARE t TEXT;

    MySQL a réponduocumentation
    #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 'TEXT' at line 4
    &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
    je ne sais pas quoi faire aide please

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

Discussions similaires

  1. Créer une procédure stockée sous MySQL avec phpmyadmin
    Par Jordan59 dans le forum SQL Procédural
    Réponses: 11
    Dernier message: 17/08/2011, 14h08
  2. Réponses: 0
    Dernier message: 11/09/2009, 18h25
  3. problème pour créer une procédure stockée
    Par PoichOU dans le forum SQL Procédural
    Réponses: 5
    Dernier message: 06/09/2007, 09h58
  4. Impossible de creer une Procédure Stockée
    Par freud dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 15/07/2007, 19h48
  5. Créer une procédure stockée depuis Delphi
    Par blonde dans le forum Bases de données
    Réponses: 10
    Dernier message: 10/03/2006, 11h26

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