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
J'obtiens l'erreur : La variable scalaire "@MA_VARIABLE_1" doit être déclarée.
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;
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
Partager