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 SELECT INTO dans une procédure stockée


Sujet :

SQL Procédural MySQL

  1. #1
    Membre régulier
    Inscrit en
    Février 2008
    Messages
    276
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 276
    Points : 83
    Points
    83
    Par défaut Erreur SELECT INTO dans une procédure stockée
    bonjour tout le monde, j'ai une erreur dans une procédure stockée que je n'arrive pas à résoudre, je serais très reconnaissant si quelqu'un m'aiderai à en trouver la solution. Voici le corps de ma procédure
    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
     
    CREATE PROCEDURE delete_user(code Integer(11), user Integer(11))
      READS SQL DATA
    begin
      DECLARE nb_user_op integer(5); 
      if(code IS not null AND user IS not null) then
        SET @sql = CONCAT('SELECT count(*) INTO nb_user_op FROM JOURNAL WHERE jo_user_fk = ', code, ';');
        PREPARE cmd FROM @sql;
        EXECUTE cmd;
     
        if(nb_user_op <=0) then
           SET @sql = CONCAT('DELETE FROM UTILISATEUR WHERE ut_code_pk = ', code,';'); 
           PREPARE cmd FROM @sql;
           EXECUTE cmd;
     
           SET @sql = CONCAT('INSERT INTO journal(jo_user_fk, jo_type, jo_date, jo_table, jo_key) values (' ,
             user, ',', CHAR(39),'D',CHAR(39), ',', CHAR(39),now(),CHAR(39), ',', CHAR(39),'UTILISATEUR',CHAR(39), ',', code, ');');  
     
           PREPARE cmd FROM @sql;
           EXECUTE cmd;
           DEALLOCATE PREPARE cmd;            
        end if; 
      end if;
    end
    Lorsque j'exécute la procédure j'ai l'erreur suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #42000Undeclared variable: nb_user_op
    Merci d'avance pour votre aide.

  2. #2
    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
    En fait, le prepared statement n'est pas exécuté dans le même contexte que ta procédure, et il ne connait donc pas la variable qui est locale à ta procédure.

    ça devrait marcher avec une variable de session :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SET @sql = CONCAT('SELECT count(*) INTO @a FROM JOURNAL WHERE jo_user_fk = ', code, ';');
        PREPARE cmd FROM @sql;
        EXECUTE cmd;
        SET nb_user_op integer = @a ;

  3. #3
    Membre régulier
    Inscrit en
    Février 2008
    Messages
    276
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 276
    Points : 83
    Points
    83
    Par défaut
    Merci pour ta réponse, vous avez raison ça marche.
    Codialement.

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

Discussions similaires

  1. Erreur "SELECT INTO" dans une fonction
    Par mercure07 dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 20/02/2009, 11h34
  2. récupérer le code d'erreur dans une procédure stockée MYSQL
    Par zephira dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 05/07/2008, 07h01
  3. Renvoyer une erreur dans une procédure stockée
    Par SLt dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 18/04/2007, 18h41
  4. Réponses: 1
    Dernier message: 20/07/2006, 17h03
  5. Comment lancer une erreur dans une procédure stockée
    Par borgfabr dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 17/05/2005, 17h06

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