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.

Read syntax diagramSkip visual syntax diagramRAISE_ERROR(sqlstate, diagnostic-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 de 9) ou letras maiúsculas maiúsculas não acentuadas (A através de Z)
  • A classe SQLSTATE (primeiros dois caracteres) não pode ser 00, 01, ou 02 porque estas não são classes de erro.
  • Se a classe SQLSTATE (primeiros dois caracteres) começar com o caractere 0 através de 6 ou A através de H, então a subclasse (últimos três caracteres) deve iniciar com uma letra no intervalo I através de Z.
  • Se a classe SQLSTATE (primeiros dois caracteres) começar com o caractere 7, 8, 9 ou I embora Z, então a subclasse (últimos três caracteres) pode ser qualquer um de 0 através de 9 ou A através de Z.

Se o SQLSTATE não estiver em conformidade com essas regras, ocorrerá um erro (SQLSTATE 428B3).

diagnóstico-string
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