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
Implementeert een SQL-scriptblok dat een reeks SQL-instructies, besturings-of-stroominstructies, lokale variabeledeclaraties en uitzonderingshandlers kan bevatten.
Notitie
Wanneer u een samengestelde instructie vanuit een notebook aanroept, moet dit de enige instructie in de cel zijn.
Syntaxis
[ label : ]
BEGIN
[ { declare_variable | declare_condition } ; [...] ]
[ declare_cursor ; [...] ]
[ declare_handler ; [...] ]
[ SQL_statement ; [...] ]
END [ label ]
declare_variable
DECLARE variable_name [, ...] datatype [ DEFAULT default_expr ]
declare_condition
DECLARE condition_name CONDITION [ FOR SQLSTATE [ VALUE ] sqlstate ]
declare_cursor
DECLARE cursor_name [ ASENSITIVE | INSENSITIVE ] CURSOR FOR query [ FOR READ ONLY ]
declare_handler
DECLARE handler_type HANDLER FOR condition_values handler_action
handler_type
EXIT | CONTINUE
condition_values
{ { SQLSTATE [ VALUE ] sqlstate | condition_name } [, ...] |
{ SQLEXCEPTION | NOT FOUND } [, ...] }
Vóór Databricks Runtime 17.2 kunt u slechts één variabele tegelijk declareren.
Parameterwaarden
-
Er wordt een optionele id gebruikt om de in de samenstelling gedefinieerde variabelen te kwalificeren en de samenstelling te verlaten. Beide labelvoorkomens moeten overeenstemmen en het
END-label kan alleen worden opgegeven indienlabel:is opgegeven.label mag niet worden opgegeven voor een samengestelde instructie op het hoogste niveau.
NOT ATOMICHiermee geeft u op dat, als een SQL-instructie binnen de samengestelde mislukt, eerdere SQL-instructies niet worden teruggedraaid. Dit is de standaardinstelling en alleen het gedrag.
declare_variableEen lokale variabeledeclaratie voor een of meer variabelen
-
Een naam voor de variabele. De naam mag niet worden aangevuld of gekwalificeerd en moet uniek zijn binnen de samengestelde verklaring.
data_typeElk ondersteund gegevenstype. Als data_type wordt weggelaten, moet u DEFAULT opgeven en het type wordt afgeleid van de default_expression.
{ DEFAULT | = } default_expressionDefinieert de initiële waarde van de variabele na de declaratie. default_expression moet kunnen worden omgezet in data_type. Als er geen standaardwaarde is opgegeven, wordt de variabele geïnitialiseerd met NULL.
-
Declare_conditionEen declaratie van een lokale voorwaarde
-
De niet-gekwalificeerde naam van de conditie is beperkt tot de samengestelde instructie.
sqlstateEen
STRINGletterlijke waarde van 5 alfanumerieke tekens (niet-hoofdlettergevoelig) bestaande uit A-Z en 0..9. De SQLSTATE mag niet beginnen met '00', '01' of 'XX'. Elke SQLSTATE die begint met '02' wordt ook gevangen door de vooraf gedefinieerde UITZONDERING NOT FOUND. Als dit niet is opgegeven, is de SQLSTATE '45000'.
-
-
Van toepassing op:
Databricks Runtime 18.1 en hogerEen lokale cursordeclaratie voor het doorlopen van queryresultaten.
Notitie
Voor
DECLARE CURSORworden alleen syntaxisfouten gedetecteerd en gegenereerd. De query wordt pas uitgevoerd als de cursor is geopend met OPEN.-
cursor_name: Een niet-gekwalificeerde naam voor de cursor, uniek onder cursors in deze samengestelde instructie. Wanneer u verwijst naar de cursor in OPEN, FETCH of CLOSE, kunt u de naam van de cursor kwalificeren met het label voor de samengestelde instructie (bijvoorbeeld
label.my_cursor) om ondubbelzinnig te zijn in geneste bereiken. -
ASENSITIVE|INSENSITIVE: optioneel. Zodra de cursor is geopend, wordt de resultatenset niet beïnvloed door DML-wijzigingen. Dit is de standaardinstelling en alleen ondersteund gedrag. - query: de query die de cursor definieert; deze wordt uitgevoerd wanneer de cursor wordt geopend met OPEN.
-
cursor_name: Een niet-gekwalificeerde naam voor de cursor, uniek onder cursors in deze samengestelde instructie. Wanneer u verwijst naar de cursor in OPEN, FETCH of CLOSE, kunt u de naam van de cursor kwalificeren met het label voor de samengestelde instructie (bijvoorbeeld
declare_handlerEen declaratie voor foutafhandeling.
handler_typeEXITClassificeert de handler om de samengestelde instructie af te sluiten nadat de voorwaarde is verwerkt. Alle cursors die in de samengestelde instructie en geneste samengestelde instructies worden geopend, worden impliciet gesloten.
CONTINUEVan toepassing op:
Databricks Runtime 18.1 en hogerClassificeert de handler om door te gaan met de uitvoering nadat de handler is voltooid. De uitvoering wordt hervat met de instructie na de instructie die de voorwaarde heeft verhoogd.
condition_valuesHiermee wordt aangegeven op welke sqlstates of voorwaarden de handler van toepassing is. Voorwaardewaarden moeten uniek zijn binnen alle handlers binnen de samengestelde instructie. Specifieke voorwaardewaarden hebben voorrang op
SQLEXCEPTION.sqlstateEen letterlijke
STRINGvan 5 tekens'A'-'Z'en'0'-'9'(niet hoofdlettergevoelig).-
Een voorwaarde die is gedefinieerd binnen deze samengestelde instructie, een buitenste samengestelde instructie, of een door het systeem gedefinieerde foutklasse.
SQLEXCEPTIONIs van toepassing op elke foutmelding die naar de gebruiker gericht is.
NOT FOUNDIs van toepassing op een foutvoorwaarde met een SQLSTATE 02-klasse, met inbegrip van de CURSOR_NO_MORE_ROWS voorwaarde (SQLSTATE
'02000') die is gegenereerd bij het ophalen buiten het einde van een cursorresultatenset.handler_actionEen SQL-instructie die moet worden uitgevoerd wanneer een van de voorwaardewaarden voorkomt. Als u meerdere instructies wilt toevoegen, gebruikt u een geneste samengestelde instructie.
SQL_statementEen SQL-instructie, zoals een DDL-, DML-, control-instructie of samengestelde instructie. Elke
SELECT- ofVALUES-instructie produceert een resultatenset die de aanroeper kan gebruiken.
Voorbeelden
-- A compound statement with local variables, and exit hanlder and a nested compound.
> BEGIN
DECLARE a INT DEFAULT 1;
DECLARE b INT DEFAULT 5;
DECLARE EXIT HANDLER FOR DIVIDE_BY_ZERO
div0: BEGIN
VALUES (15);
END div0;
SET a = 10;
SET a = b / 0;
VALUES (a);
END;
15