Declaração de arremesso de servidor SQL

Declaração de arremesso de servidor SQL

Os erros são inevitáveis ​​quando se trata de desenvolvimentos. Portanto, é um bom plano garantir que você tenha implementado algumas medidas para que os erros não quebrem a funcionalidade do seu aplicativo.

O SQL Server nos permite usar a declaração de arremesso para aumentar uma exceção. Em seguida, transferimos o contexto de execução para uma tentativa de pegar o bloco para lidar com o erro.

Sintaxe

O snippet de código a seguir mostra a sintaxe para a declaração de arremesso:

Jogue [error_numer,
mensagem de erro,
estado];

Os argumentos na sintaxe fornecida incluem o seguinte:

  1. Error_number - Este é um valor inteiro que determina a exceção elevada. O número do erro deve estar na faixa de 50000 e 2147483647. Lembre -se de que os códigos de erro abaixo de 50000 são reservados para o mecanismo do SQL Server.
  2. Mensagem de erro - Isso se refere a um valor de string que atua como a descrição para a exceção elevada. Deve ser do tipo nvarchar.
  3. estado - O argumento do estado é um valor inteiro no intervalo de 0 a 255, denotando o estado associado ao erro_message.

NOTA: Qualquer declaração antes de uma cláusula de arremesso deve ser encerrada com um semicolon. O servidor SQL também requer o arremesso para incluir os argumentos anteriores. Se a declaração de arremesso não tiver os argumentos anteriores, ela deve ser fechada dentro de um bloco de tentativa/captura.

A sintaxe é a seguinte:

Comece a tentar
-- erros em potencial
Fim de tentativa
Comece a pegar
-- Faça isso se ocorrer erro
LANÇAR;
End Catch

Você não pode usar o caractere % no parâmetro error_message. Isso ocorre porque é um personagem reservado. Se você precisar incluir o caráter%em sua mensagem de erro, certifique -se de escapar com os caracteres de porcentagem dupla (%%).

Exemplos de declaração de arremesso de servidor SQL

Vamos dar uma olhada em alguns exemplos da declaração de arremesso em ação.

SQL Server usando a instrução THON para lançar a exceção

O exemplo a seguir demonstra o uso da declaração de arremesso para aumentar uma exceção:

lançar 50001, '[falhar] - o valor solicitado não é encontrado.', 1;

Neste exemplo, usamos a declaração de arremesso para aumentar uma exceção com o código de erro 50001 e o estado de 1.

A saída resultante é a seguinte:

Erro SQL [50001] [S0001]: [Fail] - O valor solicitado não foi encontrado.

SQL Server RethRows Exceção usando a instrução THON

Também podemos usar a exceção de arremesso para repensar a última exceção. Um código de exemplo é o seguinte:

soltar tabela se existe t;
Crie a Tabela T (
Id int não é uma chave primária nula,
);
Comece a tentar
inserir valores t (id) (1);
-- lançar exceção
inserir valores t (id) (1);
fim de tentativa
Comece a pegar
print ('Erro capturado');
lançar;
final de captura;

A consulta anterior deve imprimir o seguinte:

erro capturado
Erro de SQL [2627] [23000]: Violação da restrição de chave primária 'PK__T__3213E83F35AD099E'. Não é possível inserir a chave duplicada no objeto 'DBO.t '. O valor da chave duplicado é (1).

Usando o formatMessage para lançar uma mensagem personalizada

O exemplo a seguir mostra como usar a função FormatMessage para fazer uma exceção com uma mensagem personalizada:

execut sys.Sp_addmessage @msgnum = 50001,
@Severity = 20,
@msgText = 'Uma mensagem personalizada, incluindo variável: %d',
@lang = 'us_english',
@with_log = false,
@replace = null;
declarar @msg nvarchar (2048) = formatMessage (50001, 100);
jogue 50001, @msg, 1;

Nesse caso, a função de formatMessage nos permite adicionar as mensagens personalizadas, incluindo variáveis. Novamente, você pode verificar os documentos no SQL Server sp_addmessage () para saber mais.

A mensagem de erro resultante é a seguinte:

Erro SQL [50001] [S0001]: Uma mensagem personalizada, incluindo variável: 100

Conclusão

Este post discutiu como você poderia usar a cláusula de arremesso no servidor SQL para aumentar uma exceção.

Obrigado pela leitura!