7
votes

Variables de table à l'intérieur tandis que la boucle ne pas initialiser chaque fois: SQL Server

Je me demande pourquoi les variables de table à l'intérieur tandis que la boucle ne se comporte pas comme d'autres variables. Les variables de table créées uniquement une fois et seront utilisées à travers une boucle entière. Mais d'autres variables sont initialisées à chaque fois que la boucle augmente.

Consultez le code ci-dessous pour plus d'informations xxx

est-ce un bug ??


0 commentaires

4 Réponses :


5
votes

Votre prémisse est fausse. D'autres variables ne sont pas réinitialisées à chaque fois que la déclaration de déclaration est rencontrée non plus.

1
2
...
9
10


1 commentaires

Merci pour la mise à jour .. j'ai raté Isnull lors du test avec une variable .. Cela a conduit à mon cofusion .. :(



4
votes

comme prévu

La portée variable SQL Server est par lot ou la fonction complète / procédure / déclencheur, non par construction nichée / imbriquée

http://msdn.microsoft.com/en-us/library /ms187953.aspx :

La portée d'une variable est la gamme des déclarations de transact-sql qui peuvent référence la variable. La portée d'un variables dure du point qu'il est déclaré jusqu'à la fin du lot ou procédure stockée dans laquelle il est déclaré.


0 commentaires

-1
votes

Bien que ce soit vieux post, il suffit d'ajouter mes commentaires xxx


1 commentaires

Qu'est-ce que c'est censé prouver? Vous réinitialisez @i à la fin de la déclaration



-1
votes

Si vous souhaitez charger la variable de table chaque fois que la boucle exécute. Déposez de @Tablevariable une fois le travail effectué dans la boucle.


0 commentaires