共用方式為


建立程序

這很重要

這項功能目前處於 公開預覽版

適用於:勾選 是的 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

      參數名稱在程式中必須是唯一的。

    • ININOUTOUT

      選擇性地描述 參數的模式。

      • 定義為僅供輸入的參數。 這是預設值。

      • INOUT

        定義接受輸入輸出自變數的參數。 如果程式在沒有未處理的錯誤的情況下完成,則會將最終參數值當做輸出傳回。

      • 定義輸出參數。 參數會初始化為 NULL ,如果程式完成且沒有未處理的錯誤,則會將最終參數值當做輸出傳回。

    • 資料類型

      任何支援的數據類型。

    • 預設 default_expression

      當函式調用未將自變數指派給 參數時,要使用的選擇性預設值。 default_expression必須可被轉換為。 表達式不得參考另一個參數或包含子查詢。

      當您指定一個參數的預設值時,下列所有參數也必須有預設值。

      DEFAULT 參數不支援 OUT

    • 批註comment

      參數的選擇性描述。 comment 必須是 STRING 文字表達式。

  • 複合語句

    具有 SQL 程式定義的 SQL 複合語句 (BEGIN ... END)。

    當程序建立時會驗證語法的正確性。 在程序被叫用之前,不會驗證程序主體的語意正確性。

  • 特徵

    特性 SQL SECURITY INVOKERLANGUAGE SQL 必要。 所有其他專案都是選擇性的。 您可以依任何順序指定任意數目的特性,但只能指定每個子句一次。

    • 語言 SQL

      函式實作的語言。

    • SQL 安全性調用程式

      指定程式主體中的任何 SQL 語句都會在叫用程式的使用者授權下執行。

      在解析程式主體內的關係和例程時,Azure Databricks 會在調用時使用目前的目錄和目前的架構。

    • 不具決定性

      程序被假定為非決定性,這表示它在每次調用時可能返回不同的結果,即使使用相同參數進行呼叫。

    • 備註 procedure_comment

      程序的批注。 procedure_comment 必須是 STRING 常值。 預設值為 NULL

    • 預設排序規則 UTF8_BINARY

      適用於:核取標示為是 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!