Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:
Databricks SQL
Databricks Runtime 16.3 en hoger
Belangrijk
Deze functie bevindt zich in openbare preview.
Informatie ophalen over een voorwaarde die wordt verwerkt in een uitzonderingshandler.
Deze instructie mag alleen worden gebruikt binnen een condition handler in een samengestelde instructie .
Syntaxis
GET DIAGNOSTICS CONDITION 1
{ variable_name = condition_info_item } [, ...]
condition_info_item
{ MESSAGE_TEXT |
RETURNED_SQLSTATE |
MESSAGE_ARGUMENTS |
CONDITION_IDENTIFIER |
LINE_NUMBER }
Parameterwaarden
-
Een lokale variabele of sessievariabele.
CONDITION 1Retourneert de voorwaarde die de voorwaarde-handler heeft geactiveerd. U moet issue
GET DIAGNOSTICS CONDITION 1aanroepen als het eerste statement in de handler.MESSAGE_TEXTRetourneert de berichttekst die is gekoppeld aan de voorwaarde als een
STRING.variable_namemoet eenSTRINGzijn.RETURNED_SQLSTATERetourneert de
SQLSTATEdie is gekoppeld aan de voorwaarde die als eenSTRINGwordt afgehandeld.variable_namemoet eenSTRINGzijn.MESSAGE_ARGUMENTSHiermee wordt een
MAP<STRING, STRING>-toewijzing geretourneerd, voorzien van argumenten, voor de parameters van de Databricks-voorwaarden. Voor opgegeven voorwaarden is de enige sleutel van de kaartMESSAGE_TEXT.variable_namemoet eenMAP<STRING, STRING>CONDITION_IDENTIFIERRetourneert de naam van de conditie die de uitzondering heeft veroorzaakt.
variable_namemoet eenSTRINGzijn.LINE_NUMBERRetourneert het regelnummer van de instructie die de voorwaarde verhoogt.
NULLindien niet beschikbaar.
Voorbeelden
-- 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