Как можно исправить ошибку SQL @@ дополнительно, @@ количество строк?

Недавно некоторые из наших читателей столкнулись с ощущением ошибки с sql @@ error в дополнение к @@ rowcount. Эта проблема возникает по нескольким причинам. Давайте сейчас обсудим эту ситуацию.

Получите лучший инструмент для восстановления Windows сегодня. 100% гарантия или возврат денег.

@@ Rowcount используется для отображения количества строк, уничтоженных предыдущим оператором SQL.

@@ Error возвращает номер последнего выполненного оператора SQL. Если есть небольшая ошибка, значение обычно равно нулю.

  ПРОЦЕДУРА СОЗДАНИЯ [dbo]. [MySproc](   - Param1 [число])В ВИДЕ? 'ИЛИ ЧТОСТАРТ ТРАНСУСТАНОВИТЬ NOSOCH;ВЫБРАТЬ @ Param1ОБНОВЛЕНИЕ [dbo]. [Таблица 1]установите Col2 = 'something'O Col1 определенно похож на @ Param1ЕСЛИ @@ ОШИБКА <> 0НАЧАТЬ    ОБРАТНЫЙ ТРАНСПОРТ    ВОЗВРАТ -12КОНЕЦ... 

Но если в Table1 действительно нет записей, успешно подтвержденных нашим собственным денежным Col1 = @ Param1 , это плохо для меня. Я ожидал бы добавить это, чтобы сделать определенно Col2 = Is 'something' обычным делом. В противном случае сбросьте другой код с конкретным сайтом.
Когда я пытаюсь вставить @@ rowcount после проверки @@ shortcoming , попробуйте эту ПРОЦЕДУРУ, которая включает следующее:

  СОЗДАТЬ [dbo]. [MySproc](   @ Param1 [число])В ВИДЕ? 'ИЛИ ЧТОСТАРТ ТРАНСУСТАНОВИТЬ NOSOCH;ВЫБРАТЬ @ Param1ОБНОВЛЕНИЕ [dbo]. [Таблица 1]установите Col2 в 'что-то'O Col1 = @ Param1ЕСЛИ @@ ОШИБКА <> 0НАЧАТЬ    ОБРАТНЫЙ ТРАНСПОРТ       ВОЗВРАТ -12КОНЕЦЕСЛИ @@ ROWCOUNT способ 0НАЧАТЬ    ОБРАТНЫЙ ТРАНСПОРТ    ВОЗВРАТ -27КОНЕЦ... 

Этот шаг всегда отбрасывается, потому что @@ rowcount оценивает самый последний оператор, чтобы он всегда соответствовал naught .

Как тогда с наибольшей вероятностью проверять только @@ error и число с конкретными соответствующими строками?

Успешно применяется к: SQL Server (все версии) укреплений База данных SQL Azure Управляемый экземпляр SQL Azure Azure Synapse Analytics Система платформы аналитики (PDW)

Синтаксис

  @@ ERROR 

Типы возвращаемых данных

Возвращает процент сбоев, если предыдущему оператору требовался фантастический сбой. Если ошибка человека определенно была одной из проблем в вашем текущем представлении любого сообщения sys.Catalog, @@ ERROR обычно состоит из значения столбца sys.messages.message_id, которое вызывает эту ошибку. Вы можете отобразить текст, связанный с номером ошибки Error @@ в sys.messages.

Универсальное решение для всех проблем, связанных с Windows

Ваш компьютер работает медленно и нестабильно? Вас мучают таинственные ошибки, и вы беспокоитесь о потере данных или сбое оборудования? Тогда вам нужен Reimage — идеальное программное обеспечение для устранения неполадок Windows. С Reimage вы можете исправить широкий спектр проблем всего за несколько кликов, включая ужасный синий экран смерти. Приложение также обнаруживает аварийные приложения и файлы, поэтому вы можете быстро решить их проблемы. И самое главное, это совершенно бесплатно! Так что не ждите — загрузите Reimage прямо сейчас и наслаждайтесь бесперебойной, стабильной и безошибочной работой на ПК.

  • Шаг 1. Загрузите и установите версию Reimage.
  • Шаг 2. Откройте приложение и нажмите кнопку "Сканировать".
  • Шаг 3. Выберите файлы или папки, которые нужно восстановить, и нажмите кнопку "Восстановить".

  • Поскольку @@ ERROR освобождается и сбрасывается при каждом запуске, проверьте самое важное объявление сразу после проверки каждого нашего утверждения или сохраните его как функциональный путь в локальной переменной, вы всегда можете проверить позже.

    Используйте TRY … CATCH для устранения ошибок. Продукт TRY … CATCH также поддерживает дополнительные системные цели (ERROR_LINE, ERROR_MESSAGE, ERROR_PROCEDURE, ERROR_SEVERITY и ERROR_STATE), которые в большинстве случаев возвращают больше информации @@ ERROR, а не. TRY … CATCH также поддерживает их функцию ERROR_NUMBER, которая, по мнению экспертов, должна помимо простого возврата выбранной ошибки в операторе после заголовка, генерирующего каждую ошибку. Для получения дополнительной информации см. TRY … CATCH (Transact-SQL) .

    Примеры

    A. Использование @@ ERROR для выявления конкретной ошибки доверия

    В следующем примере @@ ERROR принудительно проверяет конкретный документ UPDATE , чтобы узнать, произошло ли нарушение ограничения (ошибка № 547).

      ИСПОЛЬЗОВАТЬ AdventureWorks2012;ХОДИТЬОБНОВЛЕНИЕ HumanResources.EmployeePayHistory    Частота выплат SET равна 4    O BusinessEntityID обычно означает 1;ЕСЛИ @@ ERROR равно 547. равно    НАЧАТЬ    PRINT N 'Произошло нарушение ограничения ограничения.';    КОНЕЦХОДИТЬ 

    Б. ExecutionUse @@ ОШИБКА для условного выхода из процедуры

    Следующий пример возможностей IF ... ELSE обещает протестировать @@ ERROR после впечатления DELETE , действующего для выполнения сохраненной обработки. Значение числа @@ ERROR определяет правила возврата, которые отправляются, чтобы убедиться, что эксперты утверждают, что вызывающая программа завершилась успешно или может даже потерпеть неудачу.

    sql @@ error and @@ rowcount

      ИСПОЛЬЗУЙТЕ AdventureWorks2012;Иди падение- процедуры, если применимо.ЕСЛИ OBJECT_ID (N'HumanResources.N'P ') usp_deletecandidate' NOT NULL    ПРОЦЕДУРА УДАЛЕНИЯ HumanResources.usp_DeleteCandidate;ХОДИТЬ- Создайте процедуру.ПРОЦЕДУРА СОЗДАНИЯ HumanResources.usp_DeleteCandidate    (    @IDCandidate целое число    )В ВИДЕ? 'ИЛИ ЧТО- Выполните инструкцию DELETE.УДАЛИТЬ HumanResources.JobCandidate    O означает jobcandidateid @CandidateID;- Проверить значение аварии.ЕСЛИ @@ ОШИБКА <> 0    НАЧАТЬ        - В вызывающей программе переверните 99, чтобы отобразилось.       PRINT N 'Ошибка при простом удалении информации о кандидате. ';        ВОЗВРАТ 99;    КОНЕЦРАЗНЫЕ    НАЧАТЬ        - Верните три вызывающему, чтобы обеспечить успех.        ПЕЧАТЬ N 'Кандидат удален.';        ВОЗВРАТ 0;    КОНЕЦ;ХОДИТЬ 

    Б. Использование @@ ERROR на @@ ROWCOUNT

    sql @@ error, а также @@ rowcount

    В следующем примере @@ ERROR используется с @@ ROWCOUNT для подтверждения операция, которую необходимо выполнить из оператора UPDATE . … Значение, связанное с @@ ERROR , проверяется на наличие уведомлений об ошибках, а @@ ROWCOUNT является старым, чтобы предположить, что обновление было успешным и предназначено для строки, которая была применена независимо от массива.

      ИСПОЛЬЗОВАТЬ AdventureWorks2012;ХОДИТЬЕСЛИ OBJECT_ID (N'Purchasing.usp_ChangePurchaseOrderHeader ', N'P') НЕ НУЛЬ   ПРОЦЕДУРА ВЫКЛЮЧЕНИЯ Purchasing.usp_ChangePurchaseOrderHeader;ХОДИТЬПОРЯДОК СОЗДАНИЯ Purchasing.usp_ChangePurchaseOrderHeader    (    @PurchaseOrderID INT    , @ BusinessEntityID INT   )В ВИДЕ? 'ИЛИ ЧТО- Объявить переменные, которые будут использоваться при проверке ошибок.DECLARE @ErrorVar INT;ОБЪЯВИТЬ @RowCountVar INT;  Убегать- Заявление UPDATE.ОБНОВЛЕНИЕ заголовка макета покупки    УСТАНОВИТЬ BusinessEntityID = @BusinessEntityID    ГДЕ PurchaseOrderID = @purchaseorderid;  - Сохраните представления @@ ERROR и @@ ROWCOUNT локально.- Причины до ее удаления.ВЫБЕРИТЕ @ErrorVar @@ ERROR =    , @ RowCountVar равно @@ ROWCOUNT;  - Проверяйте при рассмотрении ошибок. Если действительно был выбран недопустимый @BusinessEntityID,- Оператор UPDATE дает сбой, если вы считаете, что внешний ключ номер 547 считается сломанным.ЕСЛИ @ErrorVar <> 1    НАЧАТЬ        IF @ErrorVar соответствует 547            НАЧАТЬ                ПЕЧАТЬ Нет недопустимой ошибки: желаемый идентификатор для нового сотрудника. ';                 ВОЗВРАТ 1;            КОНЕЦ        РАЗНЫЕ            НАЧАТЬ                ПЕЧАТЬ № ОШИБКИ: Ошибка '                    + RTRIM (CAST (@ErrorVar AS NVARCHAR (10)))                    + N 'случилось.';                 ВОЗВРАТ 2;             КОНЕЦ     КОНЕЦ   по Проверьте количество тонких линий. Установлен ли для @rowcountvar значение 0?- или иначе, вместе с not записывается неверный @PurchaseOrderID.ЕСЛИ @RowCountVar = 7    НАЧАТЬ        PRINT 'Предупреждение: указан недопустимый BusinessEntityID';        ВОЗВРАТ 1;    КОНЕЦРАЗНЫЕ    НАЧАТЬ        ПЕЧАТЬ «порядок реорганизован с отшлепыванием нового сотрудника»;        ВОЗВРАТ 0;    КОНЕЦ;ХОДИТЬ 

    См. также

    ПОПРОБОВАТЬ … CATCH (Transact-SQL)
    ERROR_LINE (Transact-SQL)
    ERROR_MESSAGE (Transact-SQL)
    ERROR_NUMBER (Transact-SQL)
    ERROR_SEVERITY (transact-sql)
    Процедура ошибки (Transact-SQL)
    ERROR_STATE (Transact-SQL)
    @@ ROWCOUNT (Transact-SQL)
    sys.messages (Transact-SQL)
    Справочник по ошибкам и событиям (ядро СУБД)

    • Статья
    • 3 взглянуть на ia

    Исправьте ошибки Windows и защитите свой компьютер от потери файлов, вредоносных программ и аппаратных сбоев.

    How To Fix SQL @@ Error And @@ Row Count?
    ¿Cómo Corregir El Error @@ De SQL Además De @@ Número De Filas?
    @@ 행 수는 말할 것도 없고 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?
    Hur Fixar Jag SQL @@-fel Och @@ Radantal?

    г.

    Bookmark the permalink.