Conseils Pour Vous Aider à Corriger L’erreur @@ Vs @@ Rowcount

Au cours des derniers jours, quelques utilisateurs ont généralement rencontré le message d’erreur bien connu avec @@ error vs . @@ nombre de lignes. Ce problème peut survenir pour plusieurs raisons. Jetons un coup d’œil digne de confiance maintenant.

Obtenez le meilleur outil de réparation Windows pour vous. Cliquez ici pour commencer à réparer votre PC dès aujourd'hui.

Utiliser. SQL Server @@ ROWCOUNT est une variable fonctionnelle réelle utilisée pour compenser, vous voyez, le nombre de lignes qui pourraient s’avérer affectées par la dernière confirmation impliquant un package. Il sera également utilisé pour la gestion des erreurs afin de vous aider à vérifier le nombre d’exécutions distraites dans l’instruction.

PROCÉDURE

  réalise [dbo]. [MonSproc](   - Param1 [nombre])COMME? 'OU QUOICOMMENCER LA TRANSMISSIONACTIVÉ ;SELECT nocount @ Param1MISE À JOUR [dbo]. [Tableau 1]SET Col2 correspond à « quelque chose »O Col1 = @ Param1SI @@ ERREUR <> 0POUR COMMENCER    TRANSPORT DE RETOUR    RETOUR -12FINIR...Lorsque 

mais traditionnellement, il n’y a pas d’enregistrements dans ma très table1 avec une impressionnante transaction Col1 égale à - Param1 , ce qui est terrible comme moi. C’est comme vérifier évidemment si Col2 = 'quelque chose' est vraiment en cours d’exécution. Sinon, retournez en utilisant un code de retour spécifique.
Lorsque j’ai tiré pour insérer la vérification @@ rowcount juste après l’erreur réelle @@ , une vérification similaire à celle de :

  PROCÉDURE DE CRÉATION [dbo]. [MonSproc](   @ Param1 [nombre])COMME? 'OU QUOICOMMENCER LA TRANSMISSIONACTIVÉ ;SELECT nocount @ Param1MISE À JOUR [dbo]. [Tableau 1]SET Col2 = 'quelque chose'O Col1 = @ Param1SI @@ ERREUR <> 0POUR COMMENCER    TRANSPORT DE RETOUR    RETOUR -12FINIRSI @@ ROWCOUNT signifie 0POUR COMMENCER    TRANSPORT DE RETOUR    RETOUR -27FINIR...Est toujours 

ce qui suit est réinitialisé à ce stade car @@ rowcount envisage la déclaration la plus récente, donc cet outil incroyable est toujours .

Comment pouvez-vous vérifier à la fois cette erreur spéciale @@ ainsi que le nombre de dialogues affectés dans un cas aussi fiable ?

@@error vs @@rowcount

@@ Rowcount était initialement utilisé pour afficher une partie du nombre de lignes affectées par la dernière instruction SQL.

@@ Error prête le numéro d’erreur de la dernière instruction d’une personne exécutée par SQL. S’il n’y a pas d’erreur, le nombre est généralement zéro.

S’applique à : SQL Server (toutes les versions prises en charge) Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)

Syntaxe

@@ ERREUR

Retour aux types

renvoie votre numéro d’erreur dès qu’une nouvelle bonne erreur s’est produite dans l’enquête précédente. Si l’erreur est une erreur utile dans la vue de la collection sys.messages, @@ failing contiendra le prix ici dans la colonne sys.messages.message_id pour cette erreur unique. Vous pouvez afficher le texte sur papier associé à @@ ERROR en saisissant le numéro sys.messages.

Quelle est la valeur dans l’erreur @@ lorsqu’une faille Trappable se produit ?

Lorsqu’une certaine erreur corrigible se produit, la fonction @@ ERROR spécifique est définie avec une valeur supérieure à 0.

Étant donné que l’erreur @@ est effacée et effacée à chaque fois que l’instruction est vraiment exécutée, recherchez-la directement pour l’instruction exacte à tester, ou stockez ce type de presque toutes les variables locales qui peuvent être consultées plus tard.

Que signifie vraiment @@ dans SQL Server ?

Dans SQL Server, le caractère @@ précède les variables d’environnement. Sans aucun doute, le serveur propose toutes les variables globales. La variable énorme pour ces personnes : commence par le préfixe @@. Vous n’avez pas besoin de déclarer des choses comme ça simplement parce que le serveur divertit ces gens de tout le temps. Ce sont des procédures système et les clients ne peuvent pas les déclarer.

Utilisez TRY … CATCH pour gérer les défauts. Const Le terme TRY … CATCH recommande également des parties système supplémentaires (ERROR_LINE, ERROR_MESSAGE, ERROR_PROCEDURE, ERROR_SEVERITY et ERROR_STATE) qui renvoient toutes les informations sur une erreur de progiciel sous la forme @@ ERROR. TRY … CATCH prend en charge la fonction ERROR_NUMBER, qui ne se limite pas à leur permettre de renvoyer fréquemment un numéro d’erreur dans une instruction immédiatement et immédiatement qui sera une instruction représentant une erreur commerciale. Pour plus d’informations ESSAYEZ savoir … CATCH (Transact-SQL) .

Exemples

A. Utilisez @@ ERROR pour identifier l’erreur correspondante

A quoi sert l’erreur @@ dans SQL ?

@@ ERROR revient au numéro d’erreur des instructions T-SQL exécutées. Il renvoie 1 si l’instruction Transact-SQL précédente spécifique n’a réussi aucune erreur, sinon un numéro d’erreur grave est renvoyé.

L’exemple suivant utilise @@ ERROR sur le marché pour vérifier l’instruction UPDATE pour voir si une violation de contrainte d’affirmation (bug n ° 547) vous a donné lieu .

@@error au lieu de @@rowcount

  USE AdventureWorks2012 ;MARCHERMISE À JOUR HumanResources.EmployeePayHistory    La fréquence de paiement SET est égale à 4    O BusinessEntityID implique 1 ;SI @@ ERREUR est égal à 547    POUR COMMENCER    IMPRIMER Devis de recherche sans limite. ';    FINIRMARCHER 

B. Utilisation conditionnelle de @@ ERROR pour exécuter la procédure correcte

L’exemple suivant ferait des instructions IF ... else , @@ ERROR après la première classe DELETE L’énoncé des travaux d’essai peut être effectué concernant la procédure blessée. La valeur de tous les @@ ERROR sujets aux décalages détermine le retour du code délivré à votre appelant actuel qui suggère le succès ou l’échec de la tactique.

USE AdventureWorks2012 ;MARCHER- Supprimer toute la procédure, elle existe peut-être déjà.SI OBJECT_ID (N'HumanResources.usp_DeleteCandidate ', N'P') N'EST PAS NULL PROCÉDURE DE SUPPRESSION HumanResources.usp_DeleteCandidate ;MARCHER- Créez votre propre processus.PROCÉDURE DE CRÉATION HumanResources.usp_DeleteCandidate ( @IDCandidate INT )COMME? 'OU QUOI- Exécutez l'instruction DELETE.SUPPRIMER HumanResources.JobCandidate O JobCandidateID implique @CandidateID ;- Vérifiez la valeur d'erreur.SI @@ ERREUR <> 0 POUR COMMENCER - Retour 99 concernant l'un de nos appelants pour palier une erreur. PRINT N' Erreur même si suppression des informations sur le candidat. '; RETOUR 99 ; FINIRDIFFÉRENT POUR COMMENCER - Renvoie 0 directement à l'appelant mystère, l'affichage est normal. PRINT N 'Candidat supprimé.'; RETOUR 0 ; FINIR;MARCHER

B. Utilisation de @@ ERROR avec @@ ROWCOUNT

Recommandé :

Votre ordinateur est-il lent et lent ? Craignez-vous de perdre vos fichiers et données importants ? Alors ne cherchez pas plus loin que Restoro - la solution ultime pour résoudre tous vos problèmes liés à Windows. Ce logiciel puissant réparera les erreurs courantes, protégera votre système contre les catastrophes et optimisera votre PC pour des performances maximales. Alors n'attendez plus - téléchargez Restoro aujourd'hui et profitez d'une expérience informatique fluide, rapide et sans souci !

  • 1. Téléchargez et installez Reimage
  • 2. Lancez le programme et sélectionnez votre langue
  • 3. Suivez les instructions à l'écran pour terminer le processus de configuration

  • L’exemple suivant utilise @@ ERROR avec @@ ROWCOUNT qui peut vérifier l’exécution du travail un UPDATE exclusif instruction. La valeur @@ ERROR peut être vérifiée lors de l’examen des indicateurs d’erreur individuels, et @@ ROWCOUNT est utilisé pour fournir que la mise à jour a été appliquée qui peut une ligne de sa table sans nécessiter aucun problème.

    USE AdventureWorks2012 ;GO OBJECT_ID (N'Achatsif.usp_ChangePurchaseOrderHeader ', N'P') NON NULL ENVOYER la formule d'achat .usp_ChangePurchaseOrderHeader ;ALLER PROCÉDURECréer Purchasing.usp_ChangePurchaseOrderHeader ( @PurchaseOrderID INT , @ BusinessEntityID INT )COMME? 'OU QUOI- Déclarez les détails à utiliser uniquement dans la vérification des erreurs.DÉCLARER @ErrorVar INT ; @RowCountVarDéclarez INT ; - Comme les utilisateurs peuvent le voir, exécutez l'instruction UPDATE.MISE À JOUR de l'en-tête du bon de commande SET BusinessEntityID = @BusinessEntityID WO PurchaseOrderID correspond à @PurchaseOrderID ; - N'écrivez que les valeurs @@ ERROR et @@ ROWCOUNT localement.- Variables bien avant qu'elles ne soient supprimées.SELECTIONNER @ErrorVar comme @@ ERREUR . @ RowCountVar = @@ ROWCOUNT; - Vérifiez les erreurs. Si un type de @BusinessEntityID incorrect est spécifié,- L'instruction UPDATE renvoie presque toutes les erreurs de violation de formule magique étrangère # 547.SI @ErrorVar <> 0 POUR COMMENCER SI @ErrorVar = 547 POUR COMMENCER IMPRIMER N'ERREUR : Identification invalideOou pour travailler avec un nouvel employé innovant. '; RETOUR 1 ; FINIR DIFFÉRENT POUR COMMENCER ERREUR D'IMPRESSION N° : Erreur ' + RTRIM (CAST (@ErrorVar AS NVARCHAR (10))) + N 'est arrivé.'; RETOUR 2 ; FINIR FINIR - Vérifier le nombre de tuyaux. @RowCountVar est 0- mais si le @PurchaseOrderID réellement incorrect est spécifié.SI @RowCountVar est égal à 0 POUR COMMENCER PRINT 'Attention : le BusinessEntityID requis n'est pas valide' ; RETOUR 1 ; FINIRDIFFÉRENT POUR COMMENCER SCEAU « mis à jour en raison d'un nouvel employé » ; RETOUR 0 ; FINIR;MARCHER

    Voir aussi

    ESSAYER … CAPTURER (Transact-SQL)
    ERROR_LINE (Transact-SQL)
    ERROR_MESSAGE (Transact-SQL)
    ERROR_NUMBER (Transact-SQL)
    ERROR_SEVERITY (transact-sql)
    Procédure d’erreur (Transact-SQL)
    ERROR_STATE (Transact-SQL)
    @@ ROWCOUNT (Transact-SQL)
    sys.messages (Transact-SQL)
    Erreurs en plus de ces événements (système d’aide de la base de données)

    • Article
    • 3 minutes de lecture.

    Obtenez le meilleur outil de réparation Windows aujourd'hui. Cliquez ici pour télécharger maintenant.