Wskazówki, Jak Poprawić Błąd @@ Vs @@ Liczby Wierszy

W ciągu kilku ostatnich dni niektórzy natknęli się na dobrze znany projekt błędu z błędem @@ w stosunku do liczby wierszy @@. Ten problem może pojawić się z kilku powodów. Zajmijmy się teraz stylem.

Uzyskaj dla siebie najlepsze narzędzie do naprawy systemu Windows. Kliknij tutaj, aby rozpocząć naprawę komputera już dziś.

Posługiwać się. SQL Server @@ ROWCOUNT to ładna zmienna używana do przesunięcia liczby wierszy komórkowych, które mogą zostać zmienione przez ostatnie potwierdzenie właściwego pakietu. Prawdopodobnie pozostanie również używany do obsługi błędów w celu sprawdzenia liczby przebiegów, których dotyczy instrukcja.

PROCEDURA

  wystrzelić [dbo]. [MySproc](   @ Param1 [liczba])JAK? 'ALBO COROZPOCZNIJ TRANSMISJĘAKTYWOWANY;SELECT liczba - Param1AKTUALIZACJA [dbo]. [Tabela 1]SET Col2 pasuje do czegośO Col1 = @ Param1JEŚLI @@ BŁĄD <> 0NA POCZĄTEK    TRANSPORT POWROTNY    POWRÓT -12KOŃCZYĆ SIĘ...Kiedy 

ale zazwyczaj poprawne są brak rekordów w tabeli1 z dochodową transakcją Col1 równą @Param1 , co jest dla mnie straszne. To jak sprawdzenie, czy Col2 = 'coś' jest rzeczywiście do wykonania. Jeśli nie, zwróć z konkretnym, znaczącym kodem powrotu.
Kiedy przeciągnąłem, aby wstawić czek @@ rowcount zaraz po większości czeków @@ , takich jak:

  PROCEDURA TWORZENIA [dbo]. [MySproc](   @ Param1 [liczba])JAK? 'ALBO COROZPOCZNIJ TRANSMISJĘAKTYWOWANY;WYBIERZ nocount @ Param1AKTUALIZACJA [dbo]. [Tabela 1]USTAW Kol2 = 'coś'O Col1 oznacza @ Param1JEŚLI @@ BŁĄD <> 0NA POCZĄTEK    TRANSPORT POWROTNY    POWRÓT -12KOŃCZYĆ SIĘJEŚLI @@ ROWCOUNT oznacza 0NA POCZĄTEK    TRANSPORT POWROTNY    POWRÓT -27KOŃCZYĆ SIĘ...Jest zawsze 

zawsze był resetowany w tym momencie, ponieważ @@ rowcount ocenia konkretną najnowszą instrukcję, więc ten gadżet zawsze ma wartość 0 .

Jak można sprawdzić zarówno to jaki specjalny błąd @@ dodatkowo liczbę dotkniętych linii pojawiających się w tak niezawodnym przypadku?

@@błąd w przeciwieństwie do @@rowcount

@@ Rowcount był do niedawna używany do wyświetlania liczby wierszy, których dotyczy instrukcja przetrwania SQL.

@@ Error przedstawia numer błędu instrukcji przetrwania wykonanej przez SQL. Jeśli zwykle nie ma błędu, wartość jest bez wątpienia zwykle zerowa.

Dotyczy: SQL Server (wszystkie obsługiwane wersje) Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)

Składnia

  @@ BŁĄD 

Powrót do typów

zwraca zwykle numer błędu, gdy tylko wystąpił dobry błąd w poprzedniej instrukcji. Jeśli błąd jest błędem w widoku kolekcji sys.messages, błąd @@ może zawierać cenę w rzeczywistej kolumnie sys.messages.message_id dla tego zdefiniowanego błędu. Możesz wyświetlić pisemną terminologię i sformułowania związane z BŁĄDEM @@, wprowadzając numer sys.messages.

Co jest uważane za wartość @@ error w przypadku wystąpienia błędu Trappable?

W przypadku wystąpienia pewnego rodzaju błędu, który można naprawić, niektóre funkcje @@ ERROR są ustawiane na jedną wartość większą niż 0.

Ponieważ konkretny błąd @@ jest usuwany i naprawiany za każdym razem, gdy zdanie jest wypełniane, znajdź go bezpośrednio do sprawdzenia w ankiecie lub zapisz, który pojawia się w prawie każdym zmienna lokalna, które będą przeglądane później.

Co oznacza wykonywanie @@ w SQL Server?

W SQL Server znak @@ poprzedza zmienne environs. Niewątpliwie serwer zarządza wszystkim zmiennymi globalnymi. Globalny przedmiot zmian dla tych osób: zaczyna się od wszystkich prefiksów @@. Nie musisz deklarować takich rzeczy, ponieważ cały serwer bawi tych ludzi przez cały ten czas. Są to funkcje systemowe i klienci nie mogą ich deklarować.

Użyj TRY … CATCH do obsługi błędów. Const Klauzula TRY … CATCH prawdopodobnie zaleca dodatkowe funkcje systemowe (ERROR_LINE, ERROR_MESSAGE, ERROR_PROCEDURE, ERROR_SEVERITY i ERROR_STATE), które zwracają wszystkie informacje o błędzie produktu w postaci @@ ERROR. TRY … CATCH obsługuje funkcję ERROR_NUMBER, która nie ogranicza się do regularnego zwracania numeru błędu w dużej instrukcji natychmiast i natychmiast do jakiegoś rodzaju instrukcji reprezentującej błąd techniczny. Aby uzyskać więcej informacji WYPRÓBUJ widok… CATCH (Transact-SQL) .

Przykłady

A. Użyj @@ ERROR, aby zidentyfikować odpowiedni błąd

Jaki jest pożytek z błędu @@ w SQL?

@@ ERROR zwraca liczbę błędów wykonanych słów T-SQL. Zwraca 1, jeśli wcześniejsza instrukcja Transact-SQL nie kwalifikowała niektórych błędów, w przeciwnym razie zwracana jest znaczna liczba błędów.

Poniższy przykład wymaga @@ BŁĄD do wypłaty w uosobieniu mody UPDATE , aby sprawdzić, czy doszło do naruszenia ograniczenia walidacji (błąd nr 547).

@@error od @@rowcount

  USE AdventureWorks2012;CHODZIĆAKTUALIZUJ HumanResources.EmployeePayHistory    USTAW częstotliwość wypłat oznacza 4    O BusinessEntityID oznacza 1;JEŚLI @@ BŁĄD = 547    NA POCZĄTEK    DRUKUJ Brak kontroli limitu. ';    KOŃCZYĆ SIĘCHODZIĆ 

B. Warunkowe użycie @@ ERROR do wykonania prawidłowej procedury

Poniższy przykład używa instrukcji IF ... else , @@ ERROR po użytecznej instrukcji DELETE w Prace testowe można wykonać na aktualnie poszkodowanej procedurze. Wartość dokładnej zmiennej @@ BŁĄD zależy od zwrócenia kodu wysłanego do pomyślnie aktualnego obiektu wywołującego, który wskazuje na pozytywne wyniki lub niepowodzenie procedury.

  USE AdventureWorks2012;CHODZIĆ- Usuń plan leczenia, może już istnieć.JEŻELI OBJECT_ID (N'HumanResources.usp_DeleteCandidate ', N'P') NIE JEST NULL     PROCEDURA USUWANIA HumanResources.usp_DeleteCandidate;CHODZIĆ- Stwórz swój własny proces.PROCEDURA TWORZENIA HumanResources.usp_DeleteCandidate    (    @IDCandidate INT    )JAK? 'ALBO CO- Wykonaj instrukcję DELETE.USUŃ HumanResources.JobCandidate    O JobCandidateID = @CandidateID;- Sprawdź wartość błędu.JEŚLI @@ BŁĄD <> 0    NA POCZĄTEK        - Wróć 99 do dowolnego z naszych rozmówców, aby wskazać jakiś błąd.       PRINT N 'Błąd podczas pobierania informacji o kandydacie. ';        POWRÓT 99;    KOŃCZYĆ SIĘINNY; RÓŻNY    NA POCZĄTEK        - Zwraca 0 bezpośrednio do dzwoniącego, ekran telewizora jest normalny.        PRINT N 'Kandydat usunięty.';       POWRÓT 0;   KOŃCZYĆ SIĘ;CHODZIĆ 

B. Używanie @@ ERROR z @@ ROWCOUNT

Zalecane:

Czy Twój komputer działa wolno i wolno? Martwisz się o utratę ważnych plików i danych? Nie szukaj dalej niż Restoro — najlepsze rozwiązanie do rozwiązywania wszystkich problemów związanych z systemem Windows. To potężne oprogramowanie naprawi typowe błędy, ochroni system przed awarią i zoptymalizuje komputer pod kątem maksymalnej wydajności. Więc nie czekaj dłużej – pobierz Restoro już dziś i ciesz się płynną, szybką i bezproblemową obsługą komputera!

  • 1. Pobierz i zainstaluj Reimage
  • 2. Uruchom program i wybierz swój język
  • 3. Postępuj zgodnie z instrukcjami wyświetlanymi na ekranie, aby zakończyć proces konfiguracji

  • Poniższy przykład używa @@ BŁĄD z @@ ROWCOUNT , który może sprawdzić zatrudnienie i wyłączną UPDATE oświadczenie. Wartość @@ ERROR można sprawdzić pod kątem wskaźników błędu, a wartość @@ ROWCOUNT służy do upewnienia się, że większość aktualizacji została zastosowana do najlepszego wiersza z jego tabeli bez żadnego problemu.

      USE AdventureWorks2012;GO OBJECT_ID (N'Zakupyif.usp_ChangePurchaseOrderHeader ', N'P') NIE NULL    WYŚLIJ zabiegi zakupu .usp_ChangePurchaseOrderHeader;PRZEJDŹ PROCEDURAUtwórz nagłówek Purchasing.usp_ChangePurchaseOrderHeader    (    @PurchaseOrderID INT    , @ BusinessEntityID INT    )JAK? 'ALBO CO- Zadeklaruj szczegóły, które zostaną wybrane podczas sprawdzania błędów.ZADEKLARUJ @ErrorVar INT; @RowCountVarZadeklaruj INT;  - Jak widzisz, wykonaj instrukcję UPDATE.AKTUALIZUJ nagłówek polecenia decyzji    SET BusinessEntityID = @BusinessEntityID    WO PurchaseOrderID pasuje do @PurchaseOrderID;  - Wpisz tylko @@ ERROR oraz @@ ROWCOUNT wartości lokalnie.- Zmienne na długo przed ich usunięciem.SELECT @ErrorVar to @@ BŁĄD    , -RowCountVar = @@ ROWCOUNT; - Sprawdź, czy nie ma błędów. Jeśli podano błędny @BusinessEntityID,- Uwaga UPDATE zwraca prawie każdy błąd naruszenia klucza obcego nr 547.JEŚLI @ErrorVar <> 0    NA POCZĄTEK        JEŚLI @ErrorVar = 547            NA POCZĄTEK                DRUKUJ N'ERROR: Nieprawidłowa identyfikacjaMoże pracować z nowym członkiem personelu. ';                  POWRÓT 1;             KOŃCZYĆ SIĘ         INNY; RÓŻNY             NA POCZĄTEK                 DRUKUJ NR BŁĘDU: Błąd '                     + RTRIM (CAST (@ErrorVar AS NVARCHAR (10)))                     + N 'stało się';                POWRÓT 2;            KOŃCZYĆ SIĘ    KOŃCZYĆ SIĘ  - Sprawdź liczbę linii. @RowCountVar to często 0- ale jeśli podano całkowicie błędny @PurchaseOrderID.JEŚLI @RowCountVar oznacza 0    NA POCZĄTEK        PRINT 'Ostrzeżenie: wymagany BusinessEntityID jest naprawdę nieprawidłowy';        POWRÓT 1;    KOŃCZYĆ SIĘINNY; RÓŻNY    NA POCZĄTEK        SEAL „zaktualizowano zamówienie do nowego pracownika”;        POWRÓT 0;    KOŃCZYĆ SIĘ;CHODZIĆ 

    Zobacz też

    SPRÓBUJ… CATCH (Transact-SQL)
    ERROR_LINE (język Transact-SQL)
    ERROR_MESSAGE (język Transact-SQL)
    ERROR_NUMBER (język Transact-SQL)
    ERROR_SEVERITY (transakcja-sql)
    Procedura błędu (języka Transact-SQL)
    ERROR_STATE (język Transact-SQL)
    @@ ROWCOUNT (Transact-SQL)
    sys.messages (Transact-SQL)
    Błędy i zdarzenia (system pomocy bazy danych)

    • Artykuł
    • trzy minuty przeczytane.

    Uzyskaj najlepsze narzędzie do naprawy systemu Windows już dziś. Kliknij tutaj, aby pobrać teraz.