2013-02-18 2 views
1

Comment créer/déclarer des variables avec un compteur dans le nom sur un MS SQL Server? J'ai un « for-like » boucle avec le curseur etTSQL: Déclarer les variables avec un compteur dans le nom

WHILE @@FETCH_STATUS = 0 

MAIS: le nombre de ces valeurs est en constante évolution. Donc je veux écrire chaque valeur dans une variable propre. Mon but est d'obtenir var noms comme: @ var1, var2 prochaine boucle @, suivant @ var3 etc. Eh bien

SET @counter = (@counter + 1) 

est pas difficile, mais comment puis-je ajouter la valeur de @Counter (!) au nom (!) de @var?

THX beaucoup!

+2

Pourquoi voudriez-vous faire cela? Si vous essayez d'imiter des tableaux, je vous suggère d'utiliser une variable de table à la place. – hsan

Répondre

2

Je pense que vous devriez créer une table temporaire pour stocker ces variables. Par exemple:

DECLARE @ValTable TABLE 
(
    ID int, 
    Val int, -- or any type you need 
) 

Maintenant insérer une nouvelle valeur:

SET @counter = (@counter + 1); 
INSERT INTO @ValTable VALUES (@counter, <VALUE>); 

Pour obtenir cette valeur [i] une utilisation simple sélectionnez:

SELECT Val FROM @ValTable where ID=<Number of value here>; 
+0

Merci beaucoup pour votre réponse. :) Je pensais à cela aussi, mais je m'attendais à ce que l'utilisation de curseurs nécessite moins de performances que l'utilisation de tables temporaires ... ou ai-je tort? –

+1

@AgenTSmith Donc, un curseur a moins de frais généraux. Le curseur ne prend pas en charge la création d'une durée d'exécution variable ni de tableaux. – Paparazzi

0

Je ne comprends pas vraiment ce que vous essayez de Mais, une façon de le faire serait de construire la chaîne de requête dans votre boucle for comme vous le voulez, plutôt que de l'exécuter pour obtenir le résultat tel que vous le souhaitez.

Questions connexes