LAGRA PROCEDUR

Viktigt!

Den här funktionen finns som allmänt tillgänglig förhandsversion.

Gäller för:markerad ja Databricks SQL Databricks Runtime 17.0 och senare markerad ja Endast Unity Catalog

Skapar en procedur i Unity Catalog som tar eller ändrar argument, kör en uppsättning SQL-instruktioner och eventuellt returnerar en resultatuppsättning.

Förutom anrop av positionsparametrar kan du även anropa procedurer med hjälp av namngivna parameteranrop.

Syntax

CREATE [OR REPLACE] PROCEDURE [IF NOT EXISTS]
    procedure_name ( [ procedure_parameter [, ...] ] )
    [ characteristic [...] ]
    AS compound_statement

procedure_parameter
    [ IN | OUT | INOUT ] parameter_name data_type
    [ DEFAULT default_expression ] [ COMMENT parameter_comment ]

characteristic
  { LANGUAGE SQL |
    SQL SECURITY INVOKER |
    NOT DETERMINISTIC |
    COMMENT procedure_comment |
    DEFAULT COLLATION UTF8_BINARY |
    MODIFIES SQL DATA }

Parameterar

  • ELLER ERSÄTT MED

    Om det anges ersätts en procedur med samma namn. Du kan inte ersätta en befintlig funktion med en procedur. Du kan inte ange den här parametern med IF NOT EXISTS.

  • OM DET INTE FINNS

    Om det anges skapar du endast proceduren när en procedur med den anteckningen inte redan finns. Om det finns en procedur med samma namn ignoreras instruktionen. Du kan inte ange den här parametern med OR REPLACE.

  • procedure_name

    Ett namn på proceduren. Du kan också kvalificera procedurnamnet med ett schemanamn. Om namnet inte är kvalificerat skapas den permanenta proceduren i det aktuella schemat.

    Procedurnamnet måste vara unikt för alla rutiner (procedurer och funktioner) i schemat.

  • procedure_parameter

    Anger en parameter för proceduren.

    • parameter_name

      Parameternamnet måste vara unikt i proceduren.

    • IN, INOUT eller OUT

      Du kan också beskriva parameterns läge.

      • I

        Definierar enbart en indataparameter. Det här är standardinställningen.

      • INOUT

        Definierar en parameter som accepterar ett argument för indatautdata. Om proceduren slutförs utan ett ohanterat fel returneras det slutliga parametervärdet som utdata.

      • UT

        Definierar en utdataparameter. Parametern initieras till NULL och om proceduren slutförs utan ett ohanterat fel returneras det slutliga parametervärdet som utdata.

    • datatyp

      Alla datatyper som stöds.

    • FÖRVAL default_expression

      Ett valfritt standardvärde som ska användas när ett funktionsanrop inte tilldelar ett argument till parametern. default_expression måste kunna typkonverteras till data_type. Uttrycket får inte referera till en annan parameter eller innehålla en underfråga.

      När du anger ett standardvärde för en parameter måste alla följande parametrar också ha ett standardvärde.

      DEFAULT stöds inte för OUT parametrar.

    • KOMMENTAR

      En valfri beskrivning av parametern. comment måste vara ett STRING literalvärde.

  • sammansatt_uttalande

    En SQL-sammansatt sats (BEGIN ... END) med definitionen av SQL-proceduren.

    När proceduren skapas valideras syntaktisk korrekthet. Procedurens brödtext verifieras inte för semantisk korrekthet förrän proceduren anropas.

  • karakteristik

    Egenskap SQL SECURITY INVOKER och LANGUAGE SQL krävs. Alla andra är valfria. Du kan ange valfritt antal egenskaper i valfri ordning, men du kan bara ange varje sats en gång.

    • LANGUAGE SQL

      Språket för funktionsimplementeringen.

    • SQL SECURITY INVOKER

      Anger att alla SQL-instruktioner i procedurens brödtext ska köras under överinseende av den användare som anropar proceduren.

      När du löser relationer och rutiner i procedurens brödtext använder Azure Databricks den aktuella katalogen och det aktuella schemat vid tidpunkten för anropet.

    • INTE DETERMINISTISK

      En procedur antas vara icke-terministisk, vilket innebär att den kan returnera olika resultat för varje anrop, även när den anropas med samma argument.

    • KOMMENTAR procedure_comment

      En kommentar till proceduren. procedure_comment måste vara STRING bokstavlig. Standardvärdet är NULL.

    • STANDARD KOLLATION UTF8_BINARY

      Gäller för:check markerad ja Databricks SQL-kontroll markerad ja Databricks Runtime 17.1 och senare

      Tvingar standardsortering av proceduren till UTF8_BINARY. Den här satsen är obligatorisk om schemat där proceduren skapas har en annan standardsortering än UTF8_BINARY. Standardsorteringen av proceduren används som standardsortering för procedureparametrar, och som standardsortering för alla strängliteraler och lokala variabler i procedurens kropp.

    • ÄNDRAR SQL DATA

      En procedur antas ändra SQL-data.

Exempel

-- Demonstrate INOUT and OUT parameter usage.
> CREATE OR REPLACE PROCEDURE add(x INT, y INT, OUT sum INT, INOUT total INT)
    LANGUAGE SQL
    SQL SECURITY INVOKER
    COMMENT 'Add two numbers'
    AS BEGIN
        SET sum = x + y;
        SET total = total + sum;
    END;
> DECLARE sum INT;
> DECLARE total INT DEFAULT 0;
> CALL add(1, 2, sum, total);
> SELECT sum, total;
 3 3
> CALL add(3, 4, sum, total);
 7 10

-- The last executed query is the result set of a procedure
> CREATE PROCEDURE greeting(IN mode STRING COMMENT 'informal or formal')
    LANGUAGE SQL
    SQL SECURITY INVOKER
    AS BEGIN
        SELECT 'Hello!';
        CASE mode WHEN 'informal' THEN SELECT 'Hi!';
                  WHEN 'formal' THEN SELECT 'Pleased to meet you.';
        END CASE;
    END;
> CALL greeting('informal');
  Hi!

> CALL greeting('formal');
  Pleased to meet you.

> CALL greeting('casual');
  Hello!