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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Février 2008
    Messages
    276
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 276
    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 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 288
    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 éclairé
    Inscrit en
    Février 2008
    Messages
    276
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 276
    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