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 dans la valeur d'une variable


Sujet :

SQL Procédural MySQL

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    201
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 201
    Points : 114
    Points
    114
    Par défaut Erreur dans la valeur d'une variable
    Bonjour,

    J'ai un probleme lors de l'execution de ma procedure stocké

    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
     
            DECLARE client_id INTEGER ;
    	DECLARE code_client VARCHAR(10) ;
    	DECLARE base_nom VARCHAR(100) ; 
    	DECLARE cursor1 CURSOR FOR SELECT basenom,clientid from db1.ma_table where basecode = 'TOTO';
     
    	open cursor1;
    	fetch cursor1 into base_nom,client_id;
    	select base_nom,client_id;
     
     
    	WHILE i <= total_ligne DO
    		 select count(id) into nb_ligne from base_nom.modifications;
           end while;

    Mon probleme est qu'a l'execution MYsql me dit qu'il ne trouve pas base_nom.modifications cela veut dire qu'il ne remplace pas base_nom par sa valeur
    Du coup mon probleme est comment faire pour utliser la valeur de la variable base_nom

    Merci d'avance

  2. #2
    Membre chevronné
    Homme Profil pro
    Dév. Java & C#
    Inscrit en
    Octobre 2002
    Messages
    1 414
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Dév. Java & C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 414
    Points : 1 996
    Points
    1 996
    Par défaut
    Bonjour,

    On peut pas utiliser un nom de variable pour le nom d'un champ ou d'un table.

    Dans ces cas, on passe par une requête préparée.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    DO WHILE (/*ta condition que je n'ai comprise*/)
        SET @req = CONCAT('SELECT COUNT(1) INTO nb_ligne FROM `', nom_base, '`.modifications');
        PREPARE @stmnt FROM @reg;
        EXECUTE @stmnt INTO nb_ligne;
        DEALLOCATE PREPARE @stmnt;
    END WHILE;

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    201
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 201
    Points : 114
    Points
    114
    Par défaut
    Merci bien ca repond bien a ma question et en plus ca repond a la question que je vient de me poser de comment integrer le resultat de ma requete

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    201
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 201
    Points : 114
    Points
    114
    Par défaut
    EN fin de compte y me reste un petit probleme

    Voila 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
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    DECLARE nb_ligne INTEGER ;
    	DECLARE nb_ligne_negatif INTEGER ;
    	DECLARE total_ligne INTEGER ;
    	DECLARE i INT DEFAULT 1 ;
    	DECLARE client_id INTEGER ;
    	DECLARE code_client VARCHAR(10) ;
    	DECLARE base_nom VARCHAR(100) ; 
     
    	DECLARE nomdelabase VARCHAR(100);
    	DECLARE nomdelatable VARCHAR(100);
    	DECLARE cursor1 CURSOR FOR SELECT basenom,clientid from db1.matable1 where basecode = 'TOTO';
     
    	open cursor1;
    	fetch cursor1 into base_nom,client_id;
    	select base_nom,client_id;
    	SELECT count(clientid) into total_ligne from db1.matable1 where basecode = 'TOTO';
    	SELECT total_ligne;
    	SET nomdelabase := base_nom;
    	SET nomdelatable := '`.modifications';
     
    	 WHILE i <= total_ligne do
     
    		SET @sqlcmd = CONCAT('SELECT COUNT(id) FROM `', base_nom);
    		SET @sqlcmd = CONCAT(@sqlcmd,nomdelatable);
    		PREPARE stmnt FROM @sqlcmd;
    		EXECUTE stmnt ;
    		DEALLOCATE PREPARE stmnt;
     
     
    	END WHILE;
    	close cursor1;	
     
    END$$
    Mon probleme est que je voudrait recuperer le resultat de EXECUTE stmnt mais je n'y arrive pas j'ai essayé cette syntaxe EXECUTE stmnt into nb_ligne mais a la compilation Mysql me provoque une erreur

    Merci d'avance

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 07/10/2011, 11h43
  2. Réponses: 2
    Dernier message: 12/04/2010, 10h26
  3. Réponses: 2
    Dernier message: 08/06/2006, 13h48
  4. afficher la valeur d'une variable contenue dans une DB
    Par titoumimi dans le forum Langage
    Réponses: 3
    Dernier message: 28/02/2006, 17h00
  5. afficher dans une boite de dialogue la valeur d'une variable
    Par micknic dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 10/07/2005, 09h25

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