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 :

problème proc mysql


Sujet :

SQL Procédural MySQL

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 5
    Points : 6
    Points
    6
    Par défaut problème proc mysql
    je suis entrain d'écrire une procédure stockée en mysql.
    le problème se trouve dans mon insert mais je n'arrive à le résoudre

    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
    24
    25
    26
    27
    DELIMITER $$
     
    DROP PROCEDURE IF EXISTS `hakim_test`.`map_hotels`$$
    CREATE PROCEDURE `hakim_test`.`map_hotels` (in swLat double,in swLon double,in neLat double,in neLon double)
    BEGIN	
    declare done INT DEFAULT 0;
    declare hotel_id int ;
    declare lat_hotel double;
    declare long_hotel double;
    declare curseur1 CURSOR FOR SELECT id,latitude, longitude from accom_details;
    declare CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
    delete from geo_hotel;
    OPEN curseur1; 
     REPEAT
     
      FETCH curseur1 INTO hotel_id,lat_hotel,long_hotel ;
      while hotel_id is not null
    	INSERT INTO geo_hotel (id,lat,lon,g )
    	VALUES( hotel_id,lat_hotel,long_hotel, GeomFromText(CONCAT('POINT(', lat_hotel,' ', long_hotel,')')));	
      end while
     
     END REPEAT;
    CLOSE curseur1;
     
    END$$
     
    DELIMITER ;
    Images attachées Images attachées  

  2. #2
    Membre expérimenté
    Avatar de randriano
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 219
    Points : 1 438
    Points
    1 438
    Par défaut
    Je rencontre aussi le même problème que toi avec l'erreur:
    #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 4
    En fait la requête fonctionne dans mon wamp-mysql local mais ça ne passe pas sur le serveur OVH en ligne
    J'ai essayé de le passer comme le tiens aussi en isolant le CREATE FUNCTION des DELIMITER
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    CREATE DEFINER=`root`@`%` FUNCTION `splitAndTranslate`(str TEXT, delim VARCHAR(124)) RETURNS text CHARSET utf8
        DETERMINISTIC
    BEGIN
    	DECLARE i INT DEFAULT 0;	-- total number of delimiters
    	DECLARE ctr INT DEFAULT 0;	-- counter for the loop
    	DECLARE str_len INT;		-- string length,self explanatory
    	DECLARE out_str text DEFAULT '';	-- return string holder
    	DECLARE temp_str text DEFAULT '';	-- temporary string holder
      	DECLARE temp_val VARCHAR(255) DEFAULT '';	-- temporary string holder for query
     
    	-- get length
    	SET str_len=LENGTH(str);	
     
    	SET i = (LENGTH(str)-LENGTH(REPLACE(str, delim, '')))/LENGTH(delim) + 1;	
    		-- get total number delimeters and add 1
    		-- add 1 since total separated values are 1 more than the number of delimiters
     
    	-- start of while loop
    	WHILE(ctr<i) DO
    		-- add 1 to the counter, which will also be used to get the value of the string
    		SET ctr=ctr+1; 
     
    		-- get value separated by delimiter using ctr as the index
    		SET temp_str = REPLACE(SUBSTRING(SUBSTRING_INDEX(str, delim, ctr), LENGTH(SUBSTRING_INDEX(str, delim,ctr - 1)) + 1), delim, '');
     
    		-- query real value and insert into temporary value holder, temp_str contains the exploded ID    		
    		SELECT CONCAT_WS("|",IdLexique,TermeFR) INTO temp_val FROM lexiques WHERE IdLexique=temp_str;
     
    		-- concat real value into output string separated by delimiter
        		SET out_str=CONCAT(out_str, temp_val, ',');
    	END WHILE;
    	-- end of while loop
     
    	-- trim delimiter from end of string
    	SET out_str=TRIM(TRAILING delim FROM out_str);
    	RETURN(out_str);	-- return 
     
    END
    Mais je ne vois pas où est l'erreur de syntaxe

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 5
    Points : 6
    Points
    6
    Par défaut c'est cool


    j'ai trouvé l'erreur était dans mes paramétres

  4. #4
    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
    Points : 11 737
    Points
    11 737
    Par défaut
    Citation Envoyé par randriano Voir le message
    Je rencontre aussi le même problème que toi avec l'erreur:

    En fait la requête fonctionne dans mon wamp-mysql local mais ça ne passe pas sur le serveur OVH en ligne
    Tu n'aurais juste un problème de délimiteur avec phpmyadmin ?

    cf le paragraphe "à propos du délimiteur" dans cet (excellent) article :
    http://alain-defrance.developpez.com...-error/#LIII-B

  5. #5
    Membre expérimenté
    Avatar de randriano
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 219
    Points : 1 438
    Points
    1 438
    Par défaut
    Citation Envoyé par racafatima Voir le message


    j'ai trouvé l'erreur était dans mes paramétres
    Paramètres? Droit?

    Je pense aussi que le mien est un problème de droit car ça passe en phpmyadmin localhost mais c'est en ligne sur ovh que ça coince !

  6. #6
    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
    Points : 11 737
    Points
    11 737
    Par défaut
    Citation Envoyé par randriano Voir le message
    Paramètres? Droit?

    Je pense aussi que le mien est un problème de droit car ça passe en phpmyadmin localhost mais c'est en ligne sur ovh que ça coince !
    Quand tu obtiens un message d'erreur comme "You have an error in your SQL syntax;", c'est que ce n'est pas un problème de droit !

    Peux-tu vérifier ta version de MySQL chez OVH ?

  7. #7
    Membre expérimenté
    Avatar de randriano
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 219
    Points : 1 438
    Points
    1 438
    Par défaut
    Celle d'ovh est 5.1 et mon mysql local n'est que 5.0.40!

    En fait j'ai oublié de mentionner la première erreur lors de l'importation d'un fichier sql, la dernière requête de création d'une fonction crashe:
    Erreur

    requête SQL:

    DELIMITER $$ /*!50003 CREATE DEFINER=`root`@`localhost` FUNCTION `splitAndTranslate`(str TEXT, delim VARCHAR(124)) RETURNS text CHARSET utf8 DETERMINISTIC BEGIN DECLARE i INT DEFAULT 0; -- total number of delimiters DECLARE ctr INT DEFAULT 0; -- counter for the loop DECLARE str_len INT; -- string length,self explanatory DECLARE out_str text DEFAULT ''; -- return string holder DECLARE temp_str text DEFAULT ''; -- temporary string holder DECLARE temp_val VARCHAR(255) DEFAULT ''; -- temporary string holder for query -- get length SET str_len=LENGTH(str); SET i = (LENGTH(str)-LENGTH(REPLACE(str, delim, '')))/LENGTH(delim) + 1; -- get total number delimeters and add 1 -- add 1 since total separated values are 1 more than the number of delimiters -- start of while loop WHILE(ctr

    MySQL a réponduocumentation
    #1227 - Access denied; you need the SUPER privilege for this operation
    Le message d'erreur que j'ai posté avant c'est lorsque j'ai tenté d'exécuter dans l'onglet SQL la requête à problème

  8. #8
    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
    Points : 11 737
    Points
    11 737
    Par défaut
    Bon... que se passe-t-il si tu passes cette requête sur OVH ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    create function toto() returns int
    return 5

  9. #9
    Membre expérimenté
    Avatar de randriano
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 219
    Points : 1 438
    Points
    1 438
    Par défaut
    Oui ça marche Antoun! Donc c'est pas un problème de droit

    Je viens de trouver l'erreur et c'est bête
    En fait CREATE DEFINER=`root`@`localhost` à changer
    CREATE DEFINER=`entrerprigalaxy`@`%`, le nom de l'user n'est pas root lol

  10. #10
    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
    Points : 11 737
    Points
    11 737
    Par défaut
    à la base, tu peux virer complètement le DEFINER=...

  11. #11
    Membre expérimenté
    Avatar de randriano
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 219
    Points : 1 438
    Points
    1 438
    Par défaut
    Oui ça marche aussi
    Merci

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

Discussions similaires

  1. problème php mysql
    Par ph_anrys dans le forum Requêtes
    Réponses: 15
    Dernier message: 02/03/2006, 15h22
  2. problème avec MySql
    Par cescu dans le forum Requêtes
    Réponses: 4
    Dernier message: 20/02/2006, 12h18
  3. Problème accent mysql
    Par staive dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 01/02/2006, 19h11
  4. [JDBC]Problème Accent MySQL depuis DB browser dans eclipse
    Par chpruvos dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 26/08/2005, 14h14

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