Resumo: neste tutorial, você irá aprender como usar o servidor SQL RAISERROR
declaração para gerar mensagens de erro definidas pelo utilizador.
se desenvolver uma nova aplicação, deve usar a declaração THROW
.,
SQL Server RAISEERROR declaração de visão geral
RAISERROR
instrução permite-lhe criar as suas próprias mensagens de erro e retornar essas mensagens de volta para o aplicativo usando o mesmo formato como um sistema de erro ou mensagem de aviso gerado pelo SQL Server Mecanismo de Banco de dados. Além disso, a declaração RAISERROR
permite definir um id de mensagem específico, nível de gravidade e estado para as mensagens de erro.,
o seguinte ilustra a sintaxe do id
afirmação:
vamos examinar a sintaxe do id
para uma melhor compreensão.
message_id
The message_id
is a user-defined error message number stored in thesys.messages
catalog view.
para adicionar um novo número de mensagem de erro definido pelo Utilizador, você usa o procedimento armazenado . Um número de mensagem de erro definido pelo Utilizador deve ser superior a 50.000., Por padrão, a declaração
usa a declaração message_id
50.000 para levantar um erro.,
a instrução A seguir adiciona uma mensagem de erro personalizada para o sys.messages
ver:
Para verificar a inserção, use a consulta a seguir:
Code language: SQL (Structured Query Language) (sql)
Para usar esta message_id, você executa o RAISEERROR
instrução da seguinte forma:
Code language: SQL (Structured Query Language) (sql)
Aqui está o resultado:
Code language: SQL (Structured Query Language) (sql)
Para remover uma mensagem de sys.messages
, você pode usar o procedimento armazenado sp_dropmessage
., Por exemplo, a instrução a seguir exclui a mensagem de id de 50005:
Code language: SQL (Structured Query Language) (sql)
message_text
message_text
é uma mensagem definida pelo usuário com a formatação de como o printf
função em C biblioteca padrão. O message_text
pode ter até 2 047 caracteres, 3 últimos caracteres são reservados para elipses (…). Se o message_text
contém 2048 ou mais, ele será truncado e é acolchoado com uma elipse.,
Quando indicar omessage_text
, oRAISERROR
a declaração usa message_id 50000 para aumentar a mensagem de erro.
O exemplo a seguir usa o RAISERROR
instrução para gerar um erro com uma mensagem de texto:
Code language: SQL (Structured Query Language) (sql)
A saída será semelhante a este:
Code language: SQL (Structured Query Language) (sql)
de gravidade
O nível de gravidade é um número inteiro entre 0 e 25, com cada nível representa a gravidade do erro.
Code language: SQL (Structured Query Language) (sql)
estado
O estado é um inteiro de 0 a 255., Se você aumentar o mesmo erro definido pelo usuário em vários locais, você pode usar um número de Estado único para cada local para tornar mais fácil encontrar qual seção do código está causando os erros. Para a maioria das implementações, você pode usar 1.
COM a opção
A opção pode ser LOG
NOWAIT
, ou SETERROR
:
-
WITH LOG
logs de erro no log de erro e o log de aplicativo para a instância do SQL Server Mecanismo de Banco de dados., WITH NOWAIT
envia a mensagem de erro ao cliente imediatamente.-
WITH SETERROR
defineERROR_NUMBER
e@@ERROR
valores message_id ou 50000, independentemente do nível de gravidade.
SQL Server RAISERROR examples
Let’s take some examples of using the RAISERROR
statement to get a better understanding.,
A) Usando o SQL Server RAISERROR com o bloco CATCH TENTE exemplo
neste exemplo, usamos o RAISERROR
dentro de uma TRY
bloco para causar a execução saltar para o associado CATCH
bloquear. Dentro do bloco CATCH
, usamos o bloco RAISERROR
para devolver a informação de erro que invocou o CATCH
bloco.,
Aqui está o resultado:
Code language: SQL (Structured Query Language) (sql)
B) Utilizando o SQL Server instrução RAISERROR com uma dinâmica de mensagem de texto de exemplo
O exemplo a seguir mostra como usar uma variável local para fornecer a mensagem de texto para um RAISERROR
declaração:
o resultado é O seguinte:
Code language: SQL (Structured Query Language) (sql)
Quando usar a instrução RAISERROR
Você usar o RAISERROR
declaração nos seguintes cenários:
- Solucionar código Transact-SQL.
- Return messages that contain variable text.
- Examine os valores dos dados.,
- Cause the execution to jump from a
TRY
block to the associatedCATCH
block. - Return error information from the
CATCH
block to the callers, either calling batch or application.
neste tutorial, irá aprender a usar o servidor SQL RAISERROR
para gerar mensagens de erro definidas pelo utilizador.