Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för:
Databricks SQL
Databricks Runtime 16.3 och senare
Viktig
Den här funktionen finns i offentlig förhandsversion.
Du kan använda kraftfull procedurlogik med sql-/PSM-standardbaserad skriptsyntax.
Alla SQL-skript består av och börjar med ett sammansatt instruktionsblock (BEGIN ... END).
En sammansatt instruktion börjar med ett avsnitt för att deklarera lokala variabler, användardefinierade villkor och villkorshanterare, som används för att fånga undantag.
Detta följs av den sammansatta instruktionstexten, som består av:
- Flödeskontrollinstruktioner omfattar loopar över predikatuttryck, FOR-loopar över frågeresultat, villkorslogik som IF och CASE samt metoder för att bryta ut loopar som LEAVE och ITERATE.
- DDL-instruktioner som
ALTER,CREATE,DROP. - DCL-instruktioner (datakontroll), till exempel GRANT och REVOKE.
- DML-uttryck INSERT, UPDATE, DELETE och MERGE.
- Frågor som returnerar resultatuppsättningar till skriptets anropare.
- SET instruktioner för att ange lokala variabler samt sessionsvariabler.
- Instruktionen EXECUTE IMMEDIATE.
- Kapslade sammansatta instruktioner som ger kapslade omfång för variabler, villkor och villkorshanterare.
Skicka data mellan anroparen och en sammansatt sats
Det finns två sätt att skicka data till och från ett SQL-skript:
- Använd sessionsvariabler för att skicka skalära värden eller små uppsättningar matriser eller kartor från ett SQL-skript till ett annat.
- Använd parametermarkörer för att skicka skalära värden eller små uppsättningar matriser eller mappa data från en notebook-widget, Python eller ett annat språk till SQL-skriptet.
Variabelomfång
Variabler som deklareras i en sammansatt sats kan refereras till i valfritt uttryck i en sammansatt sats. Databricks löser identifierare från det innersta omfånget utåt, enligt reglerna som beskrivs i Namnmatchning. Du kan använda valfria sammansatta uttrycksetiketter för att skilja dubbletter av variabelnamn.
Villkorshantering
SQL-skript stöder villkorshanterare som används för att fånga upp och bearbeta undantag för att EXIT bearbetning av SQL-skriptet.
I villkorshanteraren kan du RESIGNAL det ursprungliga undantaget, SIGNAL ett nytt undantag eller avsluta den sammansatta satsen utan undantag.
Villkorshanterare kan definieras för att hantera tre olika klasser av villkor:
Ett eller flera namngivna villkor som kan vara en specifik Databricks-definierad felklass, till exempel
DIVIDE_BY_ZEROeller ett användardeklarerat villkor. Dessa hanterare hanterar dessa specifika villkor.En eller flera
SQLSTATE:er som kan genereras av Databricks eller enSIGNAL-instruktion. Dessa hanterare kan hantera alla villkor som är associerade med denSQLSTATE.En generisk
SQLEXCEPTION-hanterare kan hantera alla villkor som faller underSQLEXCEPTION(allaSQLSTATEsom inte ärXX***och inte02***).
Följande används för att avgöra vilken villkorshanterare som gäller för ett undantag. Den här villkorshanteraren kallas den lämpligaste hanteraren:
En villkorshanterare kan inte tillämpas på någon -instruktion som definierats i dess egen brödtext eller brödtexten för någon villkorshanterare som deklarerats i samma sammansatta uttryck.
De tillämpliga villkorshanterare som definierats i den innersta sammansatta instruktionen där undantaget utlöstes är lämpliga.
Om det finns fler än en lämplig hanterare är den mest specifika hanteraren den lämpligaste. En hanterare på ett namngivet villkor är till exempel mer specifik än en på en namngiven
SQLSTATE. En allmänEXCEPTION-hanterare är den minst specifika.
Om inte en hanterare SIGNALeller RESIGNALhanterar ett eget villkor, blir resultatet av en villkorshanterare att köra instruktionen efter den sammansatta instruktionen som angav att hanteraren skulle köras härnäst.
Lagrade SQL-procedurer
Viktig
Den här funktionen finns i offentlig förhandsversion.
Gäller för:
Databricks SQL
Databricks Runtime 17.0 och senare
Med instruktionen CREATE PROCEDURE kan du spara ett SQL-skript i Unity Catalog. Du kan sedan ge åtkomst till proceduren för andra användare. Dessa huvudaktörer kan sedan använda CALL-satsen för att anropa proceduren.
Lista över kontrollflödesinstruktioner
Följande är en lista över kontrollflödesuttryck som stöds:
- CASE-instruktion
- BEGIN END-sammansatt sats
- FOR-instruktion
- GET DIAGNOSTICS-instruktion
- IF THEN ELSE-instruktion
- ITERATE-instruktion
- LEAVE-instruktion
- LOOP-instruktion
- REPEAT-instruktion
- RESIGNAL-instruktion
- SIGNAL-instruktion
- WHILE-instruktion