Est-ce que "SET NOCOUNT OFF" est nécessaire dans une procédure stockée?

J'ai beaucoup de procédures qui ont set nocount on .

Est-il nécessaire de l'éteindre à la fin de la procédure stockée?

par exemple:

 create procedure DummyProc as begin set nocount on ... set nocount off end 

set nocount on désactivera les X rows affected. message SQL renvoie. Ce message est supprimé, dans certains cas, en raison d'effets indésirables lorsque le client exécute le process stocké.

set nocount off annulera cette suppression. Cependant, set nocount on est un paramètre de scope, et par défaut, sera désactivé lorsque vous quittez la scope de toute façon.

Maintenant, est-ce que set nocount off nécessaire? Non, car toutes les nouvelles commands exécutées seront dans une scope différente, et par défaut set nocount off est toujours actif. Mais comme indiqué ci-dessus dans les commentaires, il est considéré comme une bonne pratique, juste pour indiquer explicitement que ce paramètre returnnera à la normale lorsque le process aura fini d'être exécuté.

seulement si vous ne voulez pas voir

 (1 row(s) affected) // or n rows.... 

la plupart du time – lorsque vous déboguez

et vous utilisez la command d'printing – donc vous voulez voir le text pur de votre propre … donc c'est une bonne pratique.

modifier

Cela n'affecte pas le résultat de votre requête (activé ou désactivé – ce n'est pas grave.) – Si c'est ce que vous requestz. (merci JNK).

Je sais que c'est un post plutôt ancien mais c'était le premier coup sur Google quand j'ai cherché la réponse. La réponse ci-dessus pour le tester était une très bonne idée.

J'ai testé cela et je voulais mettre à jour ce qui précède avec quelques détails supplémentaires.

L'étendue que vous créez avec un SET NOCOUNT ON est transmise aux procs que votre procédure appelle. Donc, si votre procédure fait SET NOCOUNT ON et que vous appelez un sproc, ce sproc obtient votre réglage SET NOCOUNT. Le paramètre disparaît lorsque vous quittez votre sproc, mais le réglage descend dans sprocs appelé. Si vous définissez NOCOUNT dans le sproc CALLED, le sproc externe aura le SET NOCOUNT qu'il a défini et le sproc interne n'affectera pas le sproc externe.

Je pense donc que vous n'avez pas vraiment besoin de le réinitialiser à la fin de votre sproc car vos parameters ne sortiront jamais de votre sproc vers le haut; Cependant, si votre sproc dépend de ce paramètre, il doit le définir avant qu'il en ait besoin car s'il est appelé depuis un autre sproc, il pourrait avoir un réglage différent de ce que vous supposez.