共用方式為


呼叫

這很重要

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

適用於:勾選是 Databricks SQL 勾選是 Databricks Runtime 17.0 及以上版本

依名稱叫用預存程序,並在程序中傳遞參數。

"過程呼叫最多可以巢狀化為 64 個層級。"

備註

ODBC 不支援 CALL 陳述。

語法

CALL procedure_name( [ argument [, …] ]
                     [ namedParameter => argument ] [, ...] )

參數

  • procedure_name

    要叫用之程序的名稱。 程式名稱可能選擇性地以架構名稱限定。 如果名稱不合格,則程式會在目前的架構中解析。 如果程式不存在,就會 ROUTINE_NOT_FOUND 引發錯誤。

  • 論點

    針對指派給 IN 參數的引數,可以是任何能夠轉換成該參數的型別之表達式,或使用 DEFAULT 關鍵詞。 針對 OUTINOUT 參數,自變數必須是會話變數或局部變數。

    如果程序失敗,和 OUT 參數的INOUT自變數值會保持不變。

    備註

    參數必須與參數的資料型態相符。 這包括,例如將 DATE'2015-01-01' 指定為參數,而不是使用 '2015-01-01' 後者作為 DATE 參數。

  • namedParameter

    被指派 argExpr 之參數的未限定名稱。

自變數的數目不得大於為程式指定的參數數目。 如果您指定的自變數比有參數少,則必須使用 DEFAULT 值來定義參數。

範例

> CREATE OR REPLACE PROCEDURE area_of_rectangle
     (IN x INT, IN y INT, OUT area INT, INOUT acc INT)
    LANGUAGE SQL
    SQL SECURITY INVOKER
    AS BEGIN
      SET area = x * y;
      SET acc = acc + area;
      SELECT 'Area of rectangle is: ' || area;
    END;

-- Session varables to handle OUT and INOUT parameters
> DECLARE area INT;
> DECLARE acc INT DEFAULT 10;

-- Invocation by position
> CALL area_of_rectangle(5, 10, area, acc);
  Area of rectangle is: 50
> SELECT area, acc;
  area  acc
  —---  —--
    50   60

-- Invocation by name
> CALL area_of_rectangle(y => 10, x => 5, area => area, acc => acc);
  Area of rectangle is: 50
> SELECT area, acc;
  area  acc
  —---  —--
    50  120