Советы по исправлению @@ Vs. @@ Rowcount Error

Contents

За последние несколько дней некоторым пользователям было доставлено известное сообщение об ошибке в сочетании с @@ error vs @@ rowcount. Эта проблема может возникнуть по нескольким причинам. Давайте теперь посмотрим на людей.

Получите лучший инструмент для восстановления Windows. Нажмите здесь, чтобы начать ремонт вашего ПК сегодня.

Использовать. SQL Server @@ ROWCOUNT – это функциональная переменная, используемая для компенсации количества строк, на которые может повлиять способ последнего подтверждения пакета. Он также, вероятно, будет использоваться для обработки ошибок, чтобы проверить большое количество запусков, затронутых всей инструкцией.

ПРОЦЕДУРА

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

но обычно в моей table1 практически нет записей в дополнение к успешному ежемесячному платежу Col1, равному @ Param1 , что для меня ужасно. Любит проверять, действительно ли выполняется Col2 на «что-то» . Если нет, вернитесь с конкретным кодом повторения.
Когда я потянул, чтобы ввести подтверждение @@ rowcount сразу после @@ error , проверьте, например:

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

он сбрасывается вместе с этой точкой, потому что @@ rowcount оценивает самый предыдущий оператор, поэтому этот инструмент постоянно 0 .

Как вы можете проверить как эту особую ошибку @@ , так и широкий спектр затронутых строк в таком вашем собственном надежном случае?

@@ error Against @@ rowcount

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

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

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

Синтаксис

  @@ ОШИБКА 

Вернуться к типам

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

Какое конкретное значение @@ error возникает при возникновении единственной Trappable ошибки?

Когда возникает другая исправляемая ошибка, намерение @@ ERROR устанавливается на значение больше 0.

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

Что @@ читает в SQL Server?

В SQL Server обычно символ @@ предшествует переменным среды. Несомненно, сервер управляет всем, когда мы думаем о переменных. Глобальная переменная для этих людей: начинается с префикса @@. Такие ситуации не нужно объявлять, потому что хостинг-сервер все время развлекает этих людей. Это системные функции, и клиенты просто не будут их объявлять.

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

Примеры

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

Что, несомненно, означает использование ошибки @@, когда дело доходит до SQL?

@@ ERROR возвращает номер ошибки. выполненных операторов T-SQL. Возвращается 1, если в предыдущей статье Transact-SQL не было квалифицировано никаких ошибок, без изменений теперь возвращается значительный номер ошибки.

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

@@ error vs @@ rowcount

  ИСПОЛЬЗУЙТЕ AdventureWorks2012;ХОДИТЬОБНОВЛЕНИЕ HumanResources.EmployeePayHistory    УСТАНОВИТЬ частоту выплат = 4    O BusinessEntityID подразумевает 1;ЕСЛИ @@ ОШИБКА = 547    НАЧАТЬ    ПЕЧАТЬ Безлимитное контрольное предложение. ';    КОНЕЦХОДИТЬ 

Б. Условное использование @@ ERROR для выполнения правильной процедуры

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

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

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

Рекомендуется:

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

  • 1. Скачайте и установите Reimage
  • 2. Запустите программу и выберите язык
  • 3. Следуйте инструкциям на экране, чтобы завершить процесс установки.

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

      ИСПОЛЬЗОВАТЬ AdventureWorks2012;GO OBJECT_ID (N'Purchasesif.usp_ChangePurchaseOrderHeader a, N'P ') NOT NULL    ОТПРАВИТЬ процедуру покупки .usp_ChangePurchaseOrderHeader;ПЕРЕЙТИ ПРОЦЕДУРАСоздать Purchasing.usp_ChangePurchaseOrderHeader    (    @PurchaseOrderID INT    и @ BusinessEntityID INT    )В ВИДЕ? 'ИЛИ ЧТО- Объявите точные данные, которые будут использоваться при проверке ошибок.DECLARE @ErrorVar INT; @RowCountVarОбъявить INT;  - Как видите, выполните инструкцию UPDATE.ОБНОВИТЬ заголовок дизайна покупки    SET BusinessEntityID соответствует @BusinessEntityID    WO PurchaseOrderID совпадает с @PurchaseOrderID;  - Публикуйте значения @@ ERROR и @@ ROWCOUNT только локально.- Переменные задолго до того, как они будут удалены.SELECT @ErrorVar равно @@ ERROR    , @ RowCountVar = @@ ROWCOUNT; - Проверить при ошибках. Если явно указан неверный @BusinessEntityID,- Оператор UPDATE возвращает продуктам любую ошибку нарушения внешнего ключа с номером 547.ЕСЛИ @ErrorVar <> 0    НАЧАТЬ        ЕСЛИ @ErrorVar = 547            НАЧАТЬ                ПЕЧАТЬ БЕЗ ОШИБКИ: Неверная идентификация или показ результатов с новым сотрудником. ';                  ВОЗВРАТ 1;             КОНЕЦ         РАЗНЫЕ             НАЧАТЬ                 ПЕЧАТЬ № ОШИБКИ: Ошибка '                     + RTRIM (CAST (@ErrorVar AS NVARCHAR (10)))                     + N 'случилось.';                ВОЗВРАТ 2;            КОНЕЦ    КОНЕЦ  - Проверьте текущее количество строк. @RowCountVar может быть 0- но если указан неверный @PurchaseOrderID, без сомнения.ЕСЛИ @RowCountVar = 0    НАЧАТЬ        ПЕЧАТЬ 'Предупреждение: требуемый 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 прочтите несколько минут.

    Получите лучший инструмент для восстановления Windows сегодня. Нажмите здесь, чтобы скачать сейчас.

    г.