SET NOCOUNT OFF ou RETURN @@ ROWCOUNT?
Je suis en création d'une procédure stockée dans Sql Server 2008 de la base de données. Je veux retourner le nombre de lignes affectées. Ce qui est une meilleure option SET NOCOUNT OFF ou de RETOUR @@ROWCOUNT?
ALTER PROCEDURE [dbo].[MembersActivateAccount]
@MemberId uniqueidentifier
AS
BEGIN
-- Should I use this?
SET NOCOUNT OFF;
UPDATE [dbo].Members SET accountActive = 1 WHERE id = @MemberId;
--Or should I SET NOCOUNT ON and use the following line instead?
--return @@ROWCOUNT;
END
Je sais que tous les deux, mais qui est un meilleur choix et pourquoi?
Après quelques essayant je suis venue à la conclusion que la SET NOCOUNT est DÉSACTIVÉE par défaut dans les procédures stockées. Est-il possible de modifier ce comportement à l'intérieur de ma base de données?
source d'informationauteur niaher
Vous devez vous connecter pour publier un commentaire.
Utiliser @@RowCount. C'est explicite et transparente, il est entièrement contrôlé par votre code plutôt qu'un construit-dans les comportements.
La
NOCOUNT
option peut être réglée manuellement à défaut deON
(Optons>Exécution de la Requête>SQL Server>Avancé). Si vous définissez cette façon, mais ensuite déclarerSET NOCOUNT OFF
dans votre procédure stockée alors que le contexte local est prioritaire.N'utilisez pas de RETOUR pour les valeurs. Par la convention de RETOUR à partir de procédures stockées est pour les codes d'erreur, 0 signification pas d'erreur et 0 non sens un certain genre de problème. Si vous avez besoin des données de retour, la façon appropriée de le faire est avec un paramètre de SORTIE. C'est un peu contre-intuitive, basée sur d'autres langues de l'utilisation de retour.
Je sais que d'avoir le SET NOCOUNT on ferait un DataAdapter pense qu'il y avait un conflit d'accès simultané.
Vous pouvez lire à ce sujet sur le site MSDN. Si le code est destiné à être utilisé par DataAdapters alors évidemment, n'utilisez pas de SET NOCOUNT on.
Il ressemble SqlCommand aussi ce comportementqui je suppose est la raison pour laquelle le DataAdapter a un problème (comme sous le capot, il va utiliser un objet de Commande).
Raisons pour l'utilisation de SET NOCOUNT on/OFF:
Pourquoi nous utilisons SET NOCOUNT on/off ---
Réponse : nous pouvons le comprendre en suivant les étapes
étape 1 : exécuter la requête "Select top 10 * du nom de la table".
étape 2 : ouvrir la fenêtre de message, il affiche un message "10 lignes affectées". il crée extra frais généraux et étend notre temps d'exécution.
étape 3 : pour surmonter cette extra frais généraux nous utilisons SET NOCOUNT on. Si c'est Sur, puis il ne sera jamais compter le nombre de ligne renvoie au lieu de cela, il sème un message de commandes est terminée avec succès.
étape 4 : Par défaut NOCOUNT on alors on compte le nombre de lignes retournées c'est pourquoi je suggère qu'il devrait off lors de la création de nouvelles procédures pour obtenir de meilleures performances à partir du serveur de base de données.