SQL-skript

Gäller för:Ja, markerad Databricks SQL Ja, markerad 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_ZERO eller ett användardeklarerat villkor. Dessa hanterare hanterar dessa specifika villkor.

  • En eller flera SQLSTATE:er som kan genereras av Databricks eller en SIGNAL-instruktion. Dessa hanterare kan hantera alla villkor som är associerade med den SQLSTATE.

  • En generisk SQLEXCEPTION-hanterare kan hantera alla villkor som faller under SQLEXCEPTION (alla SQLSTATE som inte är XX*** och inte 02***).

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än EXCEPTION-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: markerad med ja Databricks SQL markerad med ja 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: