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 création d'une fonction


Sujet :

SQL Procédural MySQL

  1. #1
    Membre averti
    Étudiant
    Inscrit en
    Octobre 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2008
    Messages : 13
    Par défaut Problème création d'une fonction
    Bonjour, j'ai une erreur que je n'arrive définitivement pas à régler lorsque je créer une fonction :

    MySQL said: Documentation
    #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 18
    Voici mon code :

    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
    DELIMITER //
     
    CREATE FUNCTION prono_result(scorem char(3), scorej char(3))
    RETURNS INT
    BEGIN
    	-- Variables locales
    	DECLARE	sml, smr, sjl, sjr INT;
     
    	-- Affectation des variables qui représentent une moitié de score
    	SELECT CAST(LEFT(scorem,1) AS UNSIGNED) INTO sml FROM DUAL;
    	SELECT CAST(RIGHT(scorem,1) AS UNSIGNED) INTO smr FROM DUAL;
    	SELECT CAST(LEFT(scorej,1) AS UNSIGNED) INTO sjl FROM DUAL;
    	SELECT CAST(RIGHT(scorej,1) AS UNSIGNED) INTO sjr FROM DUAL;
     
    	-- Calcul du nombre de points obtenu avec les deux scores
    	IF scorem = scorej THEN
    		RETURN 3;
    	ELSE IF (sml < smr AND sjl < sjr) OR (sml > smr AND sjl > sjr) OR (sml = smr AND sjl = sjr) THEN
    		RETURN 1;
    	ELSE
    		RETURN 0;
    	END IF;
    END //
     
    DELIMITER ;
    J'ai essayé avec END; , END// , END // , END ...
    Je ne sais plus quoi faire, avez vous une idée ?

    D'avance merci !

  2. #2
    Expert confirmé
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 932
    Par défaut
    A priori, et d'après cette page,
    soit tu utilises
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    IF...
    ELSEIF.... << pas d'espace
    END IF
    soit tu mentionnes un END IF pour chaque IF (et dans ton code, il y a 2 IF et un seul END IF)

  3. #3
    Membre averti
    Étudiant
    Inscrit en
    Octobre 2008
    Messages
    13
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2008
    Messages : 13
    Par défaut
    En effet c'était bien ça le problème. Avec ELSEIF ça marche parfaitement.
    J'ai bien lu la doc MySQL 3 ou 4 fois, mais je me suis laissé tromper par Notepad++ qui ne reconnait pas le ELSEIF comme commande SQL de base

    Merci pour la réponse en tout cas !

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

Discussions similaires

  1. [sybase] Problème lors de la création d'une fonction
    Par khaledmoez dans le forum Sybase
    Réponses: 2
    Dernier message: 23/05/2013, 15h40
  2. Réponses: 2
    Dernier message: 16/02/2012, 11h03
  3. Problème pour la création d'une fonction
    Par jipé95 dans le forum C
    Réponses: 5
    Dernier message: 10/12/2006, 14h28
  4. [DLL] problème pour appeler une fonction d'une DLL
    Par bigboomshakala dans le forum MFC
    Réponses: 34
    Dernier message: 19/07/2004, 11h30
  5. Réponses: 14
    Dernier message: 09/04/2004, 13h44

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