RAISE_ERROR Função escalar
A função RAISE_ERROR causa a instrução que inclui a função para retornar um erro com o SQLSTATE especificado, SQLCODE -438 e diagnóstico-string.
O esquema é SYSIBM.
- sqlstate
- Uma sequência de caracteres contendo exatamente 5 bytes. Ele deve ser do tipo CHAR definido com um comprimento de 5 ou tipo VARCHAR definido com um comprimento igual ou superior a 5. Em um banco de dados Unicode, a expressão também pode retornar uma sequência gráfica. Se o valor retornado não for uma sequência de caracteres, ele é escalado para uma cadeia de caracteres antes da função ser avaliada.O valor sqlstate deve obedecer às seguintes regras para SQLSTATEs definidos pelo aplicativo:
- Cada caractere deve ser do conjunto de dígitos (
0
através de9
) ou letras maiúsculas maiúsculas não acentuadas (A
através deZ
) - A classe SQLSTATE (primeiros dois caracteres) não pode ser
00
,01
, ou02
porque estas não são classes de erro. - Se a classe SQLSTATE (primeiros dois caracteres) começar com o caractere
0
através de6
ouA
através deH
, então a subclasse (últimos três caracteres) deve iniciar com uma letra no intervaloI
através deZ
. - Se a classe SQLSTATE (primeiros dois caracteres) começar com o caractere
7
,8
,9
ouI
emboraZ
, então a subclasse (últimos três caracteres) pode ser qualquer um de0
através de9
ouA
através deZ
.
Se o SQLSTATE não estiver em conformidade com essas regras, ocorrerá um erro (SQLSTATE 428B3).
diagnóstico-string - Cada caractere deve ser do conjunto de dígitos (
- Uma expressão que retorna uma sequência de caracteres que descreve a condição de erro, ou um valor booleano. Em um banco de dados Unicode, a expressão também pode retornar uma sequência gráfica. Se o valor retornado não for uma sequência de caracteres, ele é escalado para uma cadeia de caracteres antes da função ser avaliada. Se a sequência exceder 70 bytes, ela é truncada.
Result
A função RAISE_ERROR sempre retorna o valor nulo com o tipo de dados indefinido. Para usar esta função em um contexto em que o tipo de dados não pode ser determinado, uma especificação de cast deve ser usada para dar ao valor retornado null um tipo de dado. Uma expressão CASE é onde a função RAISE_ERROR será mais útil.
Exemplo
Listar números de funcionários e níveis de educação como Pós-Graduação, Graduação e Diploma. Se um nível de educação for maior que 20, aumente um erro.
SELECT EMPNO,
CASE WHEN EDUCLVL < 16 THEN 'Diploma'
WHEN EDUCLVL < 18 THEN 'Graduate'
WHEN EDUCLVL < 21 THEN 'Post Graduate'
ELSE RAISE_ERROR('70001',
'EDUCLVL has a value greater than 20')
END
FROM EMPLOYEE