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

Développement SQL Server Discussion :

Déclaration variables dynamiques


Sujet :

Développement SQL Server

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 159
    Points : 46
    Points
    46
    Par défaut Déclaration variables dynamiques
    Bonjour,

    je cherche à partager des variables entre des procédures stockées. J'ai pensé passer par une table ou j'enregistre un nombre "n" de variables.
    A l'exécution d'une procédure je veux initialiser l'ensemble des ma variables pour les avoir à disposition et éventuellement en rajouter.

    Ma table "parametres" est très simple, 2 colonnes : nom_variable, valeur_variable

    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
     
    	DECLARE @param NVARCHAR(max), @valeur NVARCHAR(max), @exec NVARCHAR(max)
     
    	DECLARE db_cursor CURSOR FOR 
    		select nom_variable, valeur_variable from mabase.parametres
    	OPEN db_cursor;
    	FETCH NEXT FROM db_cursor INTO @param, @valeur
    	WHILE @@FETCH_STATUS = 0  
    	BEGIN  
    		PRINT @param + ' - ' + @valeur
     
    		--Declaration et initialisation dynamique
    		SET @exec = 'DECLARE @' + @param + ' NVARCHAR(255)
    					SET @' + @param + ' = ''' + @valeur + ''''
     
    		PRINT @exec
    		EXEC sp_executesql @exec
     
    		PRINT 'MA_VARIABLE_1:' + @MA_VARIABLE_1
     
    		FETCH NEXT FROM db_cursor INTO @param, @valeur
    	END;
    	CLOSE db_cursor;
    	DEALLOCATE db_cursor;
    J'obtiens l'erreur : La variable scalaire "@MA_VARIABLE_1" doit être déclarée.


    Comment faire cette déclaration dynamique ? Peut être que ce n'est pas la bonne méthode et qu'il y a une autre solution ?

    Merci pour votre aide

  2. #2
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    109
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2011
    Messages : 109
    Points : 96
    Points
    96
    Par défaut
    Bonjour,

    Pourquoi vouloir le faire en dynamique?

  3. #3
    Membre expérimenté Avatar de AaâÂäÄàAaâÂäÄàAaâÂäÄ
    Homme Profil pro
    db@
    Inscrit en
    Septembre 2021
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : db@

    Informations forums :
    Inscription : Septembre 2021
    Messages : 452
    Points : 1 301
    Points
    1 301
    Par défaut
    C'est normal car ta variable est unique à la session courante et lorsque tu utilises EXEC sp_executesql, c'est lancé dans une nouvelle session donc non visible par la session source.
    À ta place, je stockerai ces données dans une table genre parametres (id, nom, valeur , ts_creation)

Discussions similaires

  1. Recordset Déclaration variable dynamique
    Par freddy52 dans le forum VBA Access
    Réponses: 2
    Dernier message: 15/03/2015, 07h52
  2. [AC-2010] Déclaration d'une variable "dynamique" dans une boucle
    Par docjo dans le forum VBA Access
    Réponses: 2
    Dernier message: 27/11/2013, 23h08
  3. [WD17] Déclaration de nom de variable dynamiquement
    Par mazbap dans le forum WinDev
    Réponses: 14
    Dernier message: 25/09/2012, 10h51
  4. Déclaration de variable dynamiquement sous pl/sql
    Par madina dans le forum PL/SQL
    Réponses: 6
    Dernier message: 07/05/2008, 18h12
  5. problème déclaration variable dynamique
    Par piotrr dans le forum Tkinter
    Réponses: 1
    Dernier message: 24/04/2007, 16h16

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