Sdílet prostřednictvím


VYTVOŘENÍ POSTUPU

Důležité

Tato funkce je ve verzi Public Preview.

Platí pro:zaškrtnuto ano Databricks SQL Databricks Runtime 17.0 a vyšší zaškrtnuto pouze ano Databricks Unity Catalog

Vytvoří proceduru v katalogu Unity, která přebírá nebo upravuje argumenty, spouští sadu příkazů SQL a volitelně vrací sadu výsledků.

Kromě volání pozičního parametru můžete také vyvolat procedury pomocí pojmenovaného vyvolání parametru.

Syntaxe

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 }

Parametry

  • NEBO NAHRAĎTE

    Pokud je zadáno, nahradí se procedura stejného názvu. Existující funkci nelze nahradit postupem. Tento parametr nelze zadat pomocí parametru IF NOT EXISTS.

  • POKUD NEEXISTUJE

    Pokud je zadána, vytvoří proceduru pouze v případě, že procedura s danou poznámkou ještě neexistuje. Pokud existuje procedura se stejným názvem, příkaz se ignoruje. Tento parametr nelze zadat pomocí parametru OR REPLACE.

  • procedure_name

    Název procedury. Volitelně můžete kvalifikovat název procedury názvem schématu. Pokud název není kvalifikovaný, vytvoří se v aktuálním schématu trvalá procedura.

    Název procedury musí být jedinečný pro všechny rutiny (procedury a funkce) ve schématu.

  • procedure_parameter

    Určuje parametr procedury.

    • parameter_name

      Název parametru musí být v rámci procedury jedinečný.

    • IN, INOUT nebo OUT

      Volitelně popisuje režim parametru.

      • V

        Definuje parametr pouze vstupní. Toto je výchozí hodnota.

      • INOUT

        Definuje parametr, který přijímá argument input-output. Pokud se procedura dokončí bez neošetřené chyby, vrátí jako výstup konečnou hodnotu parametru.

      • VEN

        Definuje výstupní parametr. Parametr se inicializuje NULL a pokud se procedura dokončí bez neošetřené chyby, vrátí jako výstup konečnou hodnotu parametru.

    • datový_typ

      Libovolný podporovaný datový typ.

    • VÝCHOZÍ default_expression

      Volitelné výchozí nastavení, které se má použít, když vyvolání funkce nepřiřazuje argument parametru. default_expression musí být přetypovatelný nadata_type. Výraz nesmí odkazovat na jiný parametr ani obsahovat poddotaz.

      Pokud zadáte výchozí hodnotu pro jeden parametr, musí mít všechny následující parametry také výchozí hodnotu.

      DEFAULT není podporováno pro parametry OUT.

    • KOMENTÁŘ

      Volitelný popis parametru. comment musí být STRING literál.

  • složený_výrok

    Složený příkaz SQL (BEGIN ... END) s definicí procedury SQL.

    Po vytvoření procedury se ověří její syntaktická správnost. Tělo procedury není ověřeno pro sémantickou správnost, dokud se nevyvolá procedura.

  • charakteristický

    Charakteristika SQL SECURITY INVOKER a LANGUAGE SQL povinné. Všechny ostatní jsou volitelné. Můžete zadat libovolný počet charakteristik v libovolném pořadí, ale každou klauzuli můžete zadat pouze jednou.

    • JAZYK SQL

      Jazyk implementace funkce.

    • VYVOLÁNÍ ZABEZPEČENÍ SQL

      Určuje, že všechny příkazy SQL v těle procedury budou provedeny pod autoritou uživatele vyvolání procedury.

      Při řešení relací a rutin v těle procedury azure Databricks používá aktuální katalog a aktuální schéma v době vyvolání.

    • NEDETERMINISTICKÝ

      Procedura se předpokládá nedeterministicky, což znamená, že při každém vyvolání může vracet různé výsledky, i když je volána se stejnými argumenty.

    • PROCEDURA_KOMENTÁŘ

      Komentář k postupu. procedure_comment musí být STRING literál. Výchozí hodnota je NULL.

    • VÝCHOZÍ KOLACE UTF8_BINARY

      Platí pro:check označený jako ano Kontrola SQL Databricks označená jako ano Databricks Runtime 17.1 a vyšší

      Vynutí výchozí kolaci procedury na UTF8_BINARY. Tato klauzule je povinná, pokud schéma, ve kterém je procedura vytvořena, má jinou výchozí kolaci než UTF8_BINARY. Výchozí kolace procedury se používá jako výchozí kolace parametrů procedury a výchozí kolace pro všechny řetězcové literály a místní proměnné v těle procedury.

    • UPRAVÍ DATA SQL.

      Předpokládá se, že se jedná o úpravu dat SQL.

Příklady

-- 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!