Поделиться через


СОЗДАТЬ ПРОЦЕДУРУ

Это важно

Эта функция доступна в общедоступной предварительной версии.

Применяется к:установлен флажок 'Да' Databricks SQL Databricks Runtime 17.0 и выше установлен флажок 'Да' только Unity Catalog

Создает процедуру в каталоге Unity, которая принимает или изменяет аргументы, выполняет набор инструкций SQL и при необходимости возвращает результирующий набор.

Помимо вызова позиционного параметра, можно также вызывать процедуры с помощью именованного вызова параметров.

Синтаксис

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 }

Параметры

  • ИЛИ ЗАМЕНИТЬ

    Если указано, процедура с тем же именем заменяется. Невозможно заменить существующую функцию процедурой. Этот параметр нельзя указать с помощью IF NOT EXISTS.

  • ЕСЛИ НЕ СУЩЕСТВУЕТ

    Если задано, создает процедуру только в том случае, если процедура с этим примечанием еще не существует. Если процедура с тем же именем существует, инструкция игнорируется. Этот параметр нельзя указать с помощью OR REPLACE.

  • procedure_name

    Название для процедуры. При желании можно уточнить имя процедуры, добавив имя схемы. Если имя не квалифицировано, постоянная процедура создается в текущей схеме.

    Имя процедуры должно быть уникальным для всех подпрограмм (процедур и функций) в схеме.

  • procedure_parameter

    Задает параметр процедуры.

    • parameter_name

      Имя параметра должно быть уникальным в рамках процедуры.

    • IN, INOUT или OUT

      При необходимости описывается режим параметра.

      • В

        Определяет только входной параметр. Это значение по умолчанию.

      • INOUT

        Определяет параметр, принимаюющий аргумент входных выходных данных. Если процедура завершается без необработанных ошибок, она вернет окончательное значение параметра в виде выходных данных.

      • ВНЕ

        Определяет выходной параметр. Параметр инициализируется NULL и, если процедура завершается без необработанных ошибок, она вернет окончательное значение параметра в виде выходных данных.

    • тип данных

      Любой поддерживаемый тип данных.

    • ПО УМОЛЧАНИЮ default_expression

      Необязательное значение по умолчанию, используемое, когда при вызове функции параметру не присваивается аргумент. default_expression должен приводиться к data_type. Выражение не должно ссылаться на другой параметр или содержать подзапрос.

      При указании по умолчанию для одного параметра все следующие параметры также должны иметь значение по умолчанию.

      DEFAULT не поддерживается для OUT параметров.

    • Комментарий COMMENT

      Необязательное описание параметра. comment должен быть литеральным значением STRING.

  • комплексное_выражение

    Составная инструкция SQL (BEGIN ... END) с определением процедуры SQL.

    При создании процедуры проверяется синтаксическая правильность. Тело процедуры не проверяется на семантическую корректность, пока не будет вызвана процедура.

  • характеристика

    Характеристика SQL SECURITY INVOKER и LANGUAGE SQL обязательные. Все остальные являются необязательными. Можно указать любое количество характеристик в любом порядке, но можно указать каждое предложение только один раз.

    • ЯЗЫК SQL

      Язык реализации функции.

    • ВЫЗОВ БЕЗОПАСНОСТИ SQL

      Указывает, что все инструкции SQL в тексте процедуры будут выполняться под руководством пользователя, вызывающего процедуру.

      При разрешении отношений и подпрограмм в теле процедуры Azure Databricks использует текущий каталог и текущую схему во время вызова.

    • НЕ ДЕТЕРМИНИРОВАННЫЙ

      Предполагается, что процедура недетерминирована, то есть она может возвращать разные результаты для каждого вызова, даже если он вызывается с одинаковыми аргументами.

    • КОММЕНТАРИЙ procedure_comment

      Комментарий к процедуре. procedure_comment должен быть STRING литеральным. Значение по умолчанию — NULL.

    • ПАРАМЕТРЫ СОРТИРОВКИ ПО УМОЛЧАНИЮ UTF8_BINARY

      Применяется к:check помеченный да флажок Databricks SQL помечен да Databricks Runtime 17.1 и более поздних версий

      Принудительно устанавливает сопоставление по умолчанию для процедуры UTF8_BINARY. Это предложение является обязательным, если схема, в которой создается процедура, имеет параметры сортировки по умолчанию, отличные от UTF8_BINARY. Порядок сопоставления по умолчанию процедуры используется как порядок сопоставления по умолчанию для параметров процедуры, строковых литералов и локальных переменных в теле процедуры.

    • ИЗМЕНЯЕТ ДАННЫЕ SQL

      Предполагается, что процедура изменяет данные SQL.

Примеры

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