Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Aplica-se a:
Databricks SQL
Databricks Runtime 16.3 e superior
Recupere informações sobre uma condição manipulada em um manipulador de exceções.
Esta instrução só pode ser usada dentro de um gestor de condições numa instrução composta .
Sintaxe
GET DIAGNOSTICS CONDITION 1
{ variable_name = condition_info_item } [, ...]
condition_info_item
{ MESSAGE_TEXT |
RETURNED_SQLSTATE |
MESSAGE_ARGUMENTS |
CONDITION_IDENTIFIER |
LINE_NUMBER }
Parâmetros
-
Uma variável local ou variável de sessão.
CONDITION 1Retorna a condição que acionou o manipulador de condições. Você deve chamar a instrução
GET DIAGNOSTICS CONDITION 1como a primeira declaração no controlador.MESSAGE_TEXTRetorna o texto da mensagem associado à condição como um
STRING.variable_namedeve ser umSTRING.RETURNED_SQLSTATERetorna o
SQLSTATEassociado à condição que está a ser tratada como umSTRING.variable_namedeve ser umSTRING.MESSAGE_ARGUMENTSRetorna um mapeamento de
MAP<STRING, STRING>fornecido como argumentos para os parâmetros das condições do Databricks. Para condições declaradas, a única chave de mapa éMESSAGE_TEXT.variable_namedeve ser umMAP<STRING, STRING>CONDITION_IDENTIFIERRetorna o nome da condição que causou a exceção.
variable_namedeve ser umSTRING.LINE_NUMBERRetorna o número da linha da instrução que gera a condição.
NULLse não estiver disponível.
Exemplos
-- Retrieve the number of rows inserted by an INSERT statement
> CREATE OR REPLACE TABLE emp(name STRING, salary DECIMAL(10, 2));
> BEGIN
DECLARE EXIT HANDLER FOR DIVIDE_BY_ZERO
BEGIN
DECLARE cond STRING;
DECLARE message STRING;
DECLARE state STRING;
DECLARE args MAP<STRING, STRING>;
DECLARE line BIGINT;
DECLARE argstr STRING;
DECLARE log STRING;
GET DIAGNOSTICS CONDITION 1
cond = CONDITION_IDENTIFIER,
message = MESSAGE_TEXT,
state = RETURNED_SQLSTATE,
args = MESSAGE_ARGUMENTS,
line = LINE_NUMBER;
SET argstr = array_join(transform(map_entries(args), t -> concat_ws(' ', 'Param:', t.key, 'Val:', t.value)), ' ');
SET log = 'Condition: ' || cond ||
' Message: ' || message ||
' SQLSTATE: ' || state ||
' Args: ' || argstr ||
' Line: ' || line;
VALUES (log);
END;
SELECT 10/0;
END;
Condition: DIVIDE_BY_ZERO Message: Division by zero. Use try_divide to tolerate divisor being 0 and return NULL instead. If necessary, set <config> to “false” to bypass this error. SQLATTE: 22012 Args: Parm: config Val: ANSI_MODE Line: 28