Udostępnij za pomocą


TWORZENIE PROCEDURY

Ważne

Ta funkcja jest dostępna w publicznej wersji testowej.

Dotyczy:zaznaczone jako tak Databricks SQL Databricks Runtime 17.0 i nowsze zaznaczone jako tak tylko katalog Unity

Tworzy procedurę w katalogu Unity, która przyjmuje i/lub modyfikuje argumenty, wykonuje zestaw zapytań SQL i opcjonalnie zwraca zestaw wyników.

Oprócz wywołania parametru pozycyjnego można również wywołać procedury przy użyciu wywołania nazwanego parametru.

Składnia

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

  • ORAZ ZASTĄP

    Jeśli zostanie określona, zostanie zamieniona procedura o tej samej nazwie. Nie można zastąpić istniejącej funkcji procedurą. Nie można określić tego parametru za pomocą IF NOT EXISTS.

  • JEŚLI NIE ISTNIEJE

    Jeśli zostanie podana, tworzy procedurę tylko wtedy, gdy procedura z tą notatką jeszcze nie istnieje. Jeśli istnieje procedura o tej samej nazwie, instrukcja jest ignorowana. Nie można określić tego parametru za pomocą OR REPLACE.

  • procedure_name

    Nazwa procedury. Opcjonalnie można zakwalifikować nazwę procedury przy użyciu nazwy schematu. Jeśli nazwa nie jest kwalifikowana, procedura stała zostanie utworzona w bieżącym schemacie.

    Nazwa procedury musi być unikatowa dla wszystkich procedur (procedur i funkcji) w schemacie.

  • procedure_parameter

    Określa parametr procedury.

    • parameter_name

      Nazwa parametru musi być unikatowa w ramach procedury.

    • IN, INOUT lub OUT

      Opcjonalnie opisuje tryb parametru.

      • W

        Definiuje tylko parametr wejściowy. Jest to wartość domyślna.

      • INOUT

        Definiuje parametr, który akceptuje argument input-output. Jeśli procedura zostanie ukończona bez nieobsługiwanego błędu, zwróci ostateczną wartość parametru jako dane wyjściowe.

      • Na zewnątrz

        Definiuje parametr wyjściowy. Parametr jest inicjowany na NULL i, jeśli procedura zostanie ukończona bez nieobsługiwanego błędu, zwróci ostateczną wartość parametru jako dane wyjściowe.

    • typ danych

      Dowolny obsługiwany typ danych.

    • DOMYŚLNE default_expression

      Opcjonalna wartość domyślna, która ma być używana, gdy wywołanie funkcji nie przypisuje argumentu do parametru. default_expression musi być rzutowalny na data_type. Wyrażenie nie może odwoływać się do innego parametru lub zawierać podzapytania.

      Po określeniu wartości domyślnej dla jednego parametru wszystkie następujące parametry muszą mieć również wartość domyślną.

      DEFAULT nie jest obsługiwany dla OUT parametrów.

    • Komentarz komentarz

      Opcjonalny opis parametru. comment musi być dosłowną wartością STRING.

  • złożone_wyrażenie

    Komunikat złożony SQL (BEGIN ... END) zawierający definicję procedury SQL.

    Po utworzeniu procedury jej poprawność składniowa jest weryfikowana. Treść procedury nie jest weryfikowana pod kątem poprawności semantycznej do momentu wywołania procedury.

  • charakterystyczny

    SQL SECURITY INVOKER cecha i LANGUAGE SQL wymagana. Wszystkie inne są opcjonalne. Można określić dowolną liczbę cech w dowolnej kolejności, ale można określić każdą klauzulę tylko raz.

    • JĘZYK SQL

      Język implementacji funkcji.

    • SQL SECURITY INVOKER

      Określa, że wszystkie instrukcje SQL w treści procedury zostaną wykonane pod władzą użytkownika wywołującego procedurę.

      Podczas rozwiązywania relacji i procedur w treści procedury usługa Azure Databricks używa bieżącego wykazu i bieżącego schematu w momencie wywołania.

    • BRAK DETERMINISTYKI

      Przyjmuje się, że procedura jest nieokreślona, co oznacza, że może zwracać różne wyniki dla każdego wywołania, nawet jeśli jest wywoływana z tymi samymi argumentami.

    • Komentarz dotyczący procedury

      Komentarz do procedury. procedure_comment musi być STRING literałem. Wartość domyślna to NULL.

    • DOMYŚLNE SORTOWANIE UTF8_BINARY

      Dotyczy:sprawdź, czy zaznaczono tak, sprawdź, czy usługa SQL databricks została oznaczona jako tak Databricks Runtime 17.1 lub nowsza

      Ustawia domyślne porządkowanie procedury na UTF8_BINARY. Ta klauzula jest obowiązkowa, jeśli schemat, w którym utworzono procedurę, ma domyślne sortowanie inne niż UTF8_BINARY. Domyślne sortowanie procedury jest używane jako domyślne sortowanie parametrów procedury oraz sortowanie domyślne dla wszystkich literałów ciągów i zmiennych lokalnych w treści procedury.

    • MODYFIKUJE DANE SQL

      Przyjęto procedurę modyfikowania danych SQL.

Przykłady

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