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