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 :

erreur de syntaxe, mais comment faire?


Sujet :

SQL Procédural MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2007
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 15
    Par défaut erreur de syntaxe, mais comment faire?
    bonjour a tous,

    je débute un peu en procédure stocké. j'en ai deja fait un peu en cours sous postGreSQL, mais c'était il y a 2 ans, et depuis rien...

    j'ai une erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #1064 - Erreur de syntaxe près de 'INTEGER' à la ligne 4
    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
    CREATE FUNCTION ajout_reservation (nb_place INTEGER, centr VARCHAR(50), semaine VARCHAR(3)) RETURNS INTEGER
    BEGIN
     
    	DECLARE dispo INTEGER;
    	DECLARE maxi INTEGER;
     
    	SELECT CONCAT('S',semaine) INTO dispo, CONCAT('S',semaine,'_max') INTO maxi
    	FROM RESERVATION 
    	WHERE CENTRE = centr;
     
              IF ((dispo + nb_place) < maxi) THEN
     
                  UPDATE RESERVATION 
    	      SET CONCAT('S',semaine) = CONCAT('S',semaine) + nb_place
                  WHERE CENTRE = centr; 
     
    	      RETURN 1;
     
    	  ELSE
     
    	      RETURN 0;
     
              END IF;
     
    END
    en fait, je gere des compteurs dans la table RESERVATION.

    voila le genre de ligne de ma table:

    centre1, S28, S28_max, S29, S29_max etc etc

    Pour le centre1 on a un nombre de place dispo max pour la S28 (dans S28_max) et le nombre de place réservé ( dans S28).

    voila pourquoi dans ma procédure j'ai en parametre le nom du centre, la semaine (uniquement le numero que je concatene), et le nombre de réservation a ajouter

    des idées?

    merci par avance!

    Bastien

  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
    DECLARE ne peut être utilisé dans un bloc BEGIN ... END, et doit intervenir au début de la routine, avant tout autre commande.
    http://dev.mysql.com/doc/refman/5.0/fr/declare.html

  3. #3
    Futur Membre du Club
    Inscrit en
    Mai 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 4
    Par défaut La commande CHECK
    Je vois que la commande CHECK ne fonctionne pas sur MySQL. Par quelle commande je peux la remplacer?

  4. #4
    Membre Expert

    Homme Profil pro
    SDE
    Inscrit en
    Août 2007
    Messages
    2 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : SDE

    Informations forums :
    Inscription : Août 2007
    Messages : 2 013
    Par défaut
    Citation Envoyé par karimix10 Voir le message
    Je vois que la commande CHECK ne fonctionne pas sur MySQL. Par quelle commande je peux la remplacer?
    La contrainte CHECK est admise par MySQL mais pas appliqué.
    Je ne pense pas que t'ai d'autres choix que de poser un trigger sur l'insert de la table.

  5. #5
    Membre averti
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2005
    Messages : 30
    Par défaut Rectificatif : DECLARE
    DECLARE ne peut être utilisé dans un bloc BEGIN ... END, et doit intervenir au début de la routine, avant tout autre commande.
    http://dev.mysql.com/doc/refman/5.0/fr/declare.html

    En fait, il y a une erreur dans la traduction :
    http://dev.mysql.com/doc/refman/5.0/en/declare.html
    DECLARE is allowed only inside a BEGIN ... END compound statement and must be at its start, before any other statements.
    c'est-à-dire que DECLARE est obligatoirement dans un BEGIN ... END, mais avant toute autre commande.

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

Discussions similaires

  1. Réponses: 46
    Dernier message: 04/01/2007, 19h02
  2. [C#] Impression GDI+, OK mais comment faire plus simple ?
    Par yo2105 dans le forum Windows Forms
    Réponses: 6
    Dernier message: 29/12/2006, 20h29
  3. [Conception] Je n'arrive pas créé une table,erreur de syntax mais laquel
    Par pierrot10 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 26/09/2006, 08h11
  4. erreur de syntaxe, mais je ne vois pas
    Par Argorate dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 18/08/2006, 12h12
  5. Réponses: 4
    Dernier message: 13/12/2005, 18h14

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