Hur Fixar Jag SQL @@-fel Och @@ Radantal?

Nyligen fick en hel del av våra läsare ett felmeddelande med sql @@-problem och @@ rowcount. Denna sjukdom uppstår för ett antal krav. Låt oss diskutera detta nu.

Skaffa det bästa Windows-reparationsverktyget idag. 100 % garanterad nöjdhet eller pengarna tillbaka.

@@ Rowcount används för att positivt visa antalet rader brutna av den sista SQL-satsen.

@@ Error ger numret bland den senast exekverade SQL-satsen. Om det inte finns något fel, är apprecieringen vanligtvis noll.

  SKAPAPROCEDUR [dbo]. [MySproc](   @ Param1 [nummer])SOM? 'ELLER VADSTARTA TRANSINSTALLERA NOSOCH;VÄLJ @ Param1UPPDATERING [dbo]. [Bord 1]set Col2 är lika med "något"O Col1 är otroligt lik vid Param1OM @@ FEL <> 0ATT BÖRJA    RETURTRANSPORT    RETUR -12SLUTET... 

Men om det inte finns några poster runt Tabell1 framgångsrikt bekräftade tack vare – vår egen transaktion Col1 antyder @ Param1 , är det dåligt att producera mig. Jag skulle lägga till detta på marknaden för att se till att Col2 = Är 'något' faktiskt är gjort. Annars, dumpa en annan kod med en pålitlig specifik webbplats.
När jag försöker så att du kan infoga @@ rowcount när du kontrollerar @@ error prova den här PROCEDUREN så här:

  SKAPA [dbo]. [MySproc](   vid Param1 [nummer])SOM? 'ELLER VADSTARTA TRANSINSTALLERA NOSOCH;VÄLJ @ Param1UPPDATERING [dbo]. [Bord 1]ställ in Col2 till "något"O Kol1 = @ Param1OM @@ FEL <> 0ATT BÖRJA    RETURTRANSPORT       RETUR -12SLUTETOM @@ ROWCOUNT betyder 0ATT BÖRJA    RETURTRANSPORT    RETUR -27SLUTET... 

Den här takten rullas alltid tillbaka på grund av att @@ rowcount utvärderar var och en av våra senaste kommentarer till att alltid spela 0 .

Hur, helt enkelt, är det möjligt att kontrollera mestadels @@ error och mitt nummer med motsvarande rader?

Gäller: SQL Server (alla versioner) stöder Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)

Syntax

  @@ FEL 

Typer av data som returneras

Returnerar procentandelen misslyckanden om det exakta föregående påståendet hade en fantastisk nedgång. Om felet definitivt var ett särskilt av felen i din nuvarande vy av sys.Catalog-meddelandet, inkluderar @@ ERROR vanligtvis ordervärdet sys.messages.message_id för att generera detta fel. Du kan visa texten som är kopplad till Error @@ felnumret hela vägen genom sys.messages.

En enda lösning för alla dina Windows-relaterade problem

Körs din dator långsam och instabil? Är du plågad av mystiska fel och orolig för dataförlust eller hårdvarufel? Då behöver du Reimage � den ultimata programvaran för att reparera Windows-problem. Med Reimage kan du fixa ett stort antal problem med bara några få klick, inklusive den fruktade Blue Screen of Death. Applikationen upptäcker också kraschar program och filer, så att du snabbt kan lösa deras problem. Och det bästa av allt, det är helt gratis! Så vänta inte � ladda ner Reimage nu och njut av en smidig, stabil och felfri PC-upplevelse.

  • Steg 1: Ladda ner och installera Reimage
  • Steg 2: Öppna programmet och klicka på knappen Skanna
  • Steg 3: Välj de filer eller mappar du vill återställa och klicka på knappen Återställ

  • Eftersom @@ ERROR förmodligen frigörs och rensas vid vilken körning som helst, kontrollera deklarationen omedelbart på grund av Kontrollera påståendet, eller behåll den som en sökväg i din egen lokala variabel som du rutinmässigt kan kontrollera senare .

    Använd TRY … CATCH för att hantera fel. TRY … CATCH-konstruktionen stöder också nya systemfunktioner (ERROR_LINE, ERROR_MESSAGE, ERROR_PROCEDURE, ERROR_SEVERITY och ERROR_STATE) som returnerar ny @@ ERROR-information än. TRY … CATCH stöder också funktionen ERROR_NUMBER, exakt vilket experter säger går längre än att bara ge tillbaka det felnumret i ett kontoutdrag efter uttalandet som genererade ett fel samtidigt. För mer information, föreställ dig TRY … CATCH (Transact-SQL) .

    Exempel

    A. Använda @@ ERROR för att identifiera ett specifikt förtroendefel

    I det efterföljande exemplet trycker @@ ERROR på en check i en utvald UPDATE -sats för att se så länge som en regelöverträdelse har utvecklats (fel # 547).

      ANVÄND AdventureWorks2012;PROMENADUPPDATERA HumanResources.EmployeePayHistory    SET överenskommen betalningsfrekvens = 4    O BusinessEntityID innebär 1;OM @@ ERROR är en 547. lika med    ATT BÖRJA    SKRIV UT N 'En överträdelse av kontrollbegränsningen har inträffat.';    SLUTETPROMENAD 

    B. ExecutionUse @@ ERROR för att villkorligt avsluta proceduren

    Följande exempel använder IF ... ELSE -satser för att trycka @@ ERROR efter en enda DELETE -sats som agerar för att använda lagrad bearbetning. Värdet på en del av numret @@ ERROR bekräftar returkoden som är kopplad för att säkerställa att den anropande datorprogramvaran lyckas, eller kanske till och med misslyckas.

    sql @@error men också @@rowcount

      ANVÄND AdventureWorks2012;Gå och släpp- förfaranden, i förekommande fall.IF OBJECT_ID (N'HumanResources.N'P ') usp_deletecandidate' INTE NULL    PROCEDUR FÖR ATT TA BORT HumanResources.usp_DeleteCandidate;PROMENAD- Skapa en procedur.PROCEDUR FÖR ATT SKAPA HumanResources.usp_DeleteCandidate    (    @IDCandidate heltal    )SOM? 'ELLER VAD- Utför DELETE-satsen.BORT HumanResources.JobCandidate    O = jobcandidateid @CandidateID;- Kontrollera felvärdet.OM @@ FEL <> 0    ATT BÖRJA        - I samtalsträningen, vänd 99 för att visa.       PRINT N 'Fel vid radering av kandidatinformation. ';        RETUR 99;    SLUTETANNORLUNDA    ATT BÖRJA        - Returnera tre till en viss uppringare för att säkerställa framgång.        SKRIV UT N 'Kandidat raderad.';        RETUR 0;    SLUTET;PROMENAD 

    B. Använda @@ ERROR på @@ ROWCOUNT

    sql @@error och @@rowcount

    I följande exempel används @@ ERROR med @@ ROWCOUNT för att validera operation eftersom måste köras från en del av UPDATE -satsen. … Värdet som är associerat med @@ ERROR kontrolleras för fel är medvetet och @@ ROWCOUNT skulle vara gammalt för att säkerställa att förbättringen lyckades för raden av faktum som användes medan arrayen.

      ANVÄND AdventureWorks2012;PROMENADOM OBJECT_ID (N'Purchasing.usp_ChangePurchaseOrderHeader ', N'P') INTE ÄR NULL   AVSTÄNGNINGSPROCEDUR Purchasing.usp_ChangePurchaseOrderHeader;PROMENADPROCEDUR FÖR ATT SKAPA Purchasing.usp_ChangePurchaseOrderHeader    (    @PurchaseOrderID INT    , på BusinessEntityID INT   )SOM? 'ELLER VAD- Deklarera variabler som vanligtvis används vid felkontroll.DEKLARE @ErrorVar INT;DECLARE @RowCountVar INT;  Spring iväg- UPPDATERA uttalande.UPPDATERA inköpsorderhuvudet    SET BusinessEntityID = @BusinessEntityID    VAR PurchaseOrderID betyder @purchaseorderid;  - Spara @@ ERROR tillsammans med @@ ROWCOUNT vyer lokalt.- Skäl innan de togs bort.VÄLJ @ErrorVar @@ ERROR =    , - RowCountVar = @@ ROWCOUNT;  - Kontrollera om det finns fel. Om ett nytt bra ogiltigt @BusinessEntityID valdes,- UPDATE-uttrycket kraschar om det främmande huvudnummer 547 bryts.IF @ErrorVar <> 1    ATT BÖRJA        OM @ErrorVar matchar 547            ATT BÖRJA                SKRIV UT Inget felfel: ID definierat för de nya typerna av anställda. ';                 RETUR 1;            SLUTET        ANNORLUNDA            ATT BÖRJA                SKRIV UT FELNR.: Fel '                    + RTRIM (CAST (@ErrorVar AS NVARCHAR (10)))                    + N 'hände.';                 RETUR 2;             SLUTET     SLUTET   - Kontrollera alla antal rader. Är @rowcountvar inställd på 0?- om ett felaktigt @PurchaseOrderID är skrivet eller inte.OM @RowCountVar motsvarar 7    ATT BÖRJA        PRINT 'Varning: Det angivna BusinessEntityID är ogiltigt';        RETUR 1;    SLUTETANNORLUNDA    ATT BÖRJA        SEAL "order omstrukturerad med ny anställd";        RETUR 0;    SLUTET;PROMENAD 

    Se även

    PROVA … CATCH (Transact-SQL)
    ERROR_LINE (Transact-SQL)
    ERROR_MESSAGE (Transact-SQL)
    ERROR_NUMBER (Transact-SQL)
    ERROR_SEVERITY (transact-sql)
    Felprocedur (Transact-SQL)
    ERROR_STATE (Transact-SQL)
    @@ ROWCOUNT (Transact-SQL)
    sys.messages (Transact-SQL)
    Referens för fel och händelser (databasmotor)

    • Artikel
    • ett antal att läsa bl.a.

    Åtgärda Windows-fel och skydda din dator från filförlust, skadlig programvara och maskinvarufel

    How To Fix SQL @@ Error And @@ Row Count?
    ¿Cómo Corregir El Error @@ De SQL Además De @@ Número De Filas?
    @@ 행 수는 말할 것도 없고 SQL @@ 오류를 수정하는 방법은 무엇입니까?
    Как можно исправить ошибку SQL @@ дополнительно, @@ количество строк?
    Come Correggere L’errore SQL @@ E Il Conteggio Delle Righe @@?
    Wie Starte Ich SQL @@ Fehler Und @@ Kurze Periodenzählung?
    Como Ter Certeza De Corrigir O Erro SQL @@ E, Portanto, @@ Contagem De Linhas?
    Comment Aider à Corriger L’erreur SQL @@ Et Donc Le Nombre De Lignes @@ ?
    Hoe Los Je De SQL @@-fout Op Naast @@ Rijentelling?
    Jak Naprawić Błąd SQL @@ I Dodatkowo @@ Liczbę Wierszy?

    Bookmark the permalink.