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

PHP & Base de données Discussion :

Echec de création de procédure stockée [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2020
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2020
    Messages : 23
    Points : 17
    Points
    17
    Par défaut Echec de création de procédure stockée
    Bonjour à tous,
    j'aurais aimé un peu de votre lumière quand à la création de ma procédure stockée,
    alors voilà je cherche à créer une procédure pour un site intranet de reservation de salle qui me permettra de choisir une salle libre
    à une date donnée
    , seulement je me retrouve avec une erreur à la création de celle ci, voici ma procédure :
    Code sql : 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
    DELIMITER |
    Create procedure reservation()
    begin
    set @salles=(SELECT id, id_typesalle
    		FROM salle
    		WHERE statut = 1
    		and id_typesalle = type
    		and nbplaces >= nbpersonnes
    		and id not in ( select salle.id
    				from reservation
    				join salle on reservation.id_salle=salle.id
    				where statut = 1
    				and id_typesalle = 1
    				and ( debut between datedeb and datefin and fin between datedebut and datefin )
                                    or  ( debut < datedebut and fin > datefin )
                                    or  ( debut < datedebut and fin between datedebut and datefin )
                                    or  ( debut between datedebut and datefin and fin > datefin))
                                    limit 1);
    if ((@salles is not null) and (debut<fin)) then
        insert into reservations (detail, datedebut, datefin, nbpersonnes, id_membres, id_salle)
        values (detail, debut, fin, nbpersonnes, id_membres, @salles);
        SELECT 1;
    ELSE
        SELECT 0;
    end if;
    if (@salles is null ) then
    	signal sqlstate '45000' set message_text = 'Reservation impossible pour les critères choisis';
    end if;
    end
    |
    et voici l'erreur :
    #1054 - Unknown column 'debut' in 'field list'
    Toute aide serait la bienvenue

  2. #2
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2020
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2020
    Messages : 23
    Points : 17
    Points
    17
    Par défaut
    J'ai trouvé, je n'avais pas passé les paramètres IN pour mes dates dans ma procédure, alors voilà j'ai remis mes paramètres
    Code sql : 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
    DELIMITER |
    Create procedure reservation(IN debut datetime, IN fin datetime, IN type varchar)
    begin
    set @salles=(SELECT id, id_typesalle
    		FROM salle
    		WHERE statut = 1
    		and id_typesalle = type
    		and nbplaces >= nbpersonnes
    		and id not in ( select salle.id
    				from reservation
    				join salle on reservation.id_salle=salle.id
    				where statut = 1
    				and id_typesalle = type
    				and ( debut between datedeb and datefin and fin between datedebut and datefin )
                                    or  ( debut < datedebut and fin > datefin )
                                    or  ( debut < datedebut and fin between datedebut and datefin )
                                    or  ( debut between datedebut and datefin and fin > datefin))
                                    limit 1);
    if ((@salles is not null) and (debut<fin)) then
        insert into reservations (detail, datedebut, datefin, nbpersonnes, id_membres, id_salle)
        values (detail, debut, fin, nbpersonnes, id_membres, @salles);
        SELECT 1;
    ELSE
        SELECT 0;
    end if;
    if (@salles is null ) then
    	signal sqlstate '45000' set message_text = 'Reservation impossible pour les critères choisis';
    end if;
    end
    |

    Seulement à l'ajout du paramètre "type" ( paramètre qui servira l'utilisateur veut reserver une salle informatisée ou non).
    JE me retrouve avec une nouvelle erreur, qui n'apparait pas si je ne le mets pas :
    #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')
    begin
    set @salles=(SELECT id, id_typesalle
    FROM salle
    WHERE statut = 1' at line 1

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

Discussions similaires

  1. Création de procédure stockée
    Par toams69 dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 20/04/2009, 21h22
  2. Création de procédure stockée
    Par smooncef dans le forum Développement
    Réponses: 6
    Dernier message: 22/04/2008, 14h26
  3. Création de procédure stocké erreur
    Par ran_hery dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 22/02/2007, 09h39
  4. Réponses: 1
    Dernier message: 26/05/2005, 12h24
  5. [Débutant] Création de procédure stockée
    Par david71 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 24/06/2004, 18h19

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