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:
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