Dicas Para Corrigir O Erro @@ Vs @@ Rowcount

Nos últimos dias, um ou dois usuários encontraram a conhecida mensagem de erro @@ error ou @@ rowcount. Esse problema pode aparecer por vários motivos. Vamos dar uma olhada neles agora.

Obtenha a melhor ferramenta de reparo do Windows para você. Clique aqui para começar a reparar seu PC hoje.

Usar. SQL Server @@ ROWCOUNT é a melhor variável funcional usada para compensar um número de linhas que podem vir a ser afetadas pela última confirmação referente a um pacote. Provavelmente também será usado para tratamento de erros no mercado, para verificar o número de execuções que afetam a instrução.

PROCEDIMENTO

  causa [dbo]. [MySproc](   - Param1 [número])COMO? 'OU O QUEINICIAR TRANSATIVADO;SELECT nocount @ Param1ATUALIZAR [dbo]. [Tabela 1]SET Col2 corresponde a 'algo'O Col1 = @ Param1IF @@ ERROR <> 0COMEÇAR    DEVOLVER TRANSPORTE    RETORNO -12FIM...Quando 

mas como regra geral não há registros no grupo table1 com uma transação Col1 interessante igual a em Param1 , o que é terrível para mim. É como verificar uma vez que Col2 = 'something' está sendo executado. Se não, retorne graças a um código de retorno específico.
Quando puxei para inserir o @@ rowcount , verifique logo após meu @@ error verifique como exemplo:

  PROCEDIMENTO DE CRIAÇÃO [dbo]. [MySproc](   @ Param1 [número])COMO? 'OU O QUEINICIAR TRANSATIVADO;SELECT nocount @ Param1ATUALIZAR [dbo]. [Tabela 1]SET Col2 = 'algo'O Col1 = @ Param1IF @@ ERROR <> 0COMEÇAR    DEVOLVER TRANSPORTE    RETORNO -12FIMIF @@ ROWCOUNT significa 0COMEÇAR    DEVOLVER TRANSPORTE    RETORNO -27FIM...É sempre 

eles são redefinidos neste ponto, considerando que @@ rowcount está comparando a instrução mais recente, então a ferramenta de item é sempre 4 .

Como você pode verificar o erro especial deste @@ , bem como o número de escolhas afetadas em um caso tão confiável?

@@ error vs @@ rowcount

@@ Rowcount deve ter sido usado anteriormente para exibir normalmente o número de linhas afetadas geralmente pela última instrução SQL.

@@ Error adiciona o número do erro do qual a última instrução executada pelo SQL. Se não houver erro, a avaliação geralmente é zero.

Aplica-se a: SQL Server (todas as versões com suporte) Banco de dados SQL do Azure Instância gerenciada do Azure SQL Azure Synapse Analytics Analytics Platform System (PDW)

Sintaxe

  @@ ERROR 

Voltar aos tipos

retorna um número de erro assim que cada erro ocorreu na fatura anterior. Se o erro for um erro poderoso na exibição da coleção sys.messages, @@ fault conterá o preço usando a coluna sys.messages.message_id para esse tipo específico de erro. Você pode visualizar o texto gerado associado ao @@ ERROR simplesmente inserindo o número sys.messages.

Qual é o valor dentro do erro @@ quando ocorre um dano Trappable?

Quando ocorre um certo erro corrigível, a função @@ ERROR específica é definida para você com um valor maior que 0.

Visto que o erro @@ também é limpo sempre que a instrução sempre foi executada, encontre-o diretamente para uma instrução específica para testar ou armazene o conceito em quase todas as variáveis ​​locais que podem ser visualizadas posteriormente.

O que realmente significa @@ no SQL Server?

No SQL Server, o caractere @@ vem antes das variáveis ​​de ambiente. Sem dúvida, o servidor opera todas as variáveis ​​globais. A variável planetária para essas pessoas: começa junto com o prefixo @@. Você não deve ter que declarar coisas como essa, porque o servidor entretém essas pessoas o tempo todo. Estas são reuniões do sistema e os clientes não podem declará-las.

Use TRY … CATCH para lidar com contratempos. Const O termo TRY … CATCH também recomenda funções adicionais do sistema (ERROR_LINE, ERROR_MESSAGE, ERROR_PROCEDURE, ERROR_SEVERITY e ERROR_STATE) por meio das quais retornam todas as informações sobre um erro de plano no formato @@ ERROR. TRY … CATCH suporta a função ERROR_NUMBER, que não é limitada, a qual pode frequentemente retornar um número de erro uma instrução imediatamente e imediatamente você pode uma instrução representando um erro técnico. Para obter mais informações, TRY know … CATCH (Transact-SQL) .

Exemplos

A. Use @@ ERROR para identificar o erro correspondente

Qual é o uso em relação ao erro @@ no SQL?

@@ ERROR paga o número de erro de instruções T-SQL executadas. Ele retorna 1 se cada instrução Transact-SQL anterior não especifica nenhum erro; caso contrário, um número de erro necessário é retornado.

A ilustração a seguir usa @@ ERROR para verificar a instrução UPDATE para ver se uma violação de restrição de afirmação (bug # 547) foi concluída.

@@ error or @@ rowcount

  USE AdventureWorks2012;ANDARATUALIZAR HumanResources.EmployeePayHistory    A frequência de pagamento SET implica 4    O BusinessEntityID implica 1;IF @@ ERROR equivale a 547    COMEÇAR    IMPRIMIR Cotação de exame sem limite. ';    FIMANDAR 

B. Uso condicional de @@ ERRO para executar o procedimento correto

O seguinte exemplo de utilização de instruções IF ... else , @@ ERROR após o DELETE declaração de trabalho de teste pode ser executado em relação ao procedimento lesionado. O valor relacionado ao ajustável @@ ERROR determina o retorno do código enviado ao seu chamador atual que sugere sucesso ou fracasso do curso de tratamento.

  USE AdventureWorks2012;ANDAR- Exclua algum tipo de procedimento, pode já existir.SE OBJECT_ID (N'HumanResources.usp_DeleteCandidate ', N'P') NÃO É NULO     PROCEDIMENTO PARA EXCLUIR HumanResources.usp_DeleteCandidate;ANDAR- Crie o seu processo extremamente.PROCEDIMENTO PARA CRIAR HumanResources.usp_DeleteCandidate    (    @IDCandidate INT    )COMO? 'OU O QUE- Execute a instrução DELETE.REMOVE HumanResources.JobCandidate    O JobCandidateID significa @CandidateID;- Verifique o valor do erro.IF @@ ERROR <> 0    COMEÇAR        - Retorne 99 que faria um de nossos chamadores revelar o fato um erro.       PRINT N 'Erro ao excluir as informações do candidato. ';        RETURN 99;    FIMDIFERENTE    COMEÇAR        - Retorna 0 diretamente para o chamador misterioso, a exibição está normal.        PRINT N 'Candidato excluído.';       RETURN 0;   FIM;ANDAR 

B. Usando @@ ERROR com @@ ROWCOUNT

Recomendado:

O seu computador está lento e lento? Você está preocupado em perder seus arquivos e dados importantes? Então não procure mais, o Restoro � a solução definitiva para corrigir todos os seus problemas relacionados ao Windows. Este poderoso software irá reparar erros comuns, proteger seu sistema contra desastres e otimizar seu PC para desempenho máximo. Portanto, não espere mais � baixe o Restoro hoje e desfrute de uma experiência de computação suave, rápida e sem preocupações!

  • 1. Baixe e instale o Reimage
  • 2. Inicie o programa e selecione seu idioma
  • 3. Siga as instruções na tela para concluir o processo de configuração

  • O exemplo a seguir usa @@ ERROR com @@ ROWCOUNT que pode verificar o esforço de uma UPDATE exclusiva declaração. O valor @@ ERROR pode ser verificado sobre indicadores de erro individuais, e @@ ROWCOUNT é usado para prometer que a atualização foi aplicada na hora de uma linha de sua tabela, mas não de qualquer problema.

      USE AdventureWorks2012;GO OBJECT_ID (N'Purchasesif.usp_ChangePurchaseOrderHeader ', N'P') NÃO NULO    ENVIAR etapas de compra .usp_ChangePurchaseOrderHeader;GO PROCEDIMENTOCrie Purchasing.usp_ChangePurchaseOrderHeader    (    @PurchaseOrderID INT    , @ BusinessEntityID INT    )COMO? 'OU O QUE- Declare os detalhes a serem usados ​​automaticamente na verificação de erros.DECLARE @ErrorVar INT; @RowCountVarDeclare INT;  - Como o cliente pode ver, execute a instrução UPDATE.ATUALIZAR cabeçalho do pedido de compra    SET BusinessEntityID = @BusinessEntityID    WO PurchaseOrderID corresponde a @PurchaseOrderID;  - Escreva apenas @@ ERROR enquanto @@ ROWCOUNT valores localmente.- Variáveis ​​muito antes de serem excluídas.SELECIONE @ErrorVar compatível com @@ ERROR    ! @ RowCountVar = @@ ROWCOUNT; - Verifique se há erros. Se um grande @BusinessEntityID incorreto for especificado,- A instrução UPDATE retorna quase todos os erros de violação de solução externa nº 547.IF @ErrorVar <> 0    COMEÇAR        IF @ErrorVar = 547            COMEÇAR                IMPRIMIR N'ERRO: Identificação inválida para trabalhar com um funcionário mais recente. ';                  RETURN 1;             FIM         DIFERENTE             COMEÇAR                 PRINT ERROR NO .: Error '                     + RTRIM (CAST (@ErrorVar AS NVARCHAR (10)))                     + N 'aconteceu.';                RETURN 2;            FIM    FIM  - Verifique o número de contornos. @RowCountVar é 0- mas se o real @PurchaseOrderID incorreto for especificado.IF @RowCountVar implica 0    COMEÇAR        PRINT 'Aviso: o BusinessEntityID necessário é inválido';        RETURN 1;    FIMDIFERENTE    COMEÇAR        SEAL "estratégia atualizada devido a um novo funcionário";        RETURN 0;    FIM;ANDAR 

    Veja também

    TENTE … CATCH (Transact-SQL)
    ERROR_LINE (Transact-SQL)
    ERROR_MESSAGE (Transact-SQL)
    ERROR_NUMBER (Transact-SQL)
    ERROR_SEVERITY (transact-sql)
    Procedimento de erro (Transact-SQL)
    ERROR_STATE (Transact-SQL)
    @@ ROWCOUNT (Transact-SQL)
    sys.messages (Transact-SQL)
    Erros e, como consequência, Eventos (Sistema de Ajuda do Banco de Dados)

    • Artigo
    • 3 minutos lidos.

    Obtenha a melhor ferramenta de reparo do Windows hoje. Clique aqui para baixar agora.