Von Bedeutung
この機能は パブリック プレビュー段階です。
適用対象: :Databricks Runtime 17.0 以降 Unity カタログのみとマークされています
引数を受け取るか変更し、SQL ステートメントのセットを実行し、必要に応じて結果セットを返すプロシージャを Unity Catalog に作成します。
位置指定パラメーターの呼び出しに加えて、名前付きパラメーター呼び出しを使用してプロシージャを呼び出すこともできます。
構文
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 |
MODIFIES SQL DATA ] }
パラメーター
または置換する
指定した場合、同じ名前のプロシージャが置き換えられます。 既存の関数をプロシージャに置き換えることはできません。
IF NOT EXISTS
と一緒にこのパラメーターを指定することはできません。存在しない場合
指定した場合は、そのメモを持つプロシージャがまだ存在しない場合にのみ、プロシージャを作成します。 同じ名前のプロシージャが存在する場合、ステートメントは無視されます。
OR REPLACE
と一緒にこのパラメーターを指定することはできません。-
プロシージャの名前。 必要に応じて、プロシージャ名をスキーマ名で修飾できます。 名前が修飾されていない場合は、永続的なプロシージャが現在のスキーマに作成されます。
プロシージャ名は、スキーマ内のすべてのルーチン (プロシージャと関数) に対して一意である必要があります。
procedure_parameter
プロシージャのパラメーターを指定します。
-
パラメーター名は、プロシージャ内で一意である必要があります。
IN、 INOUT、または OUT
必要に応じて、パラメーターのモードを記述します。
で
入力のみのパラメーターを定義します。 これが既定値です。
INOUT
入力/出力引数を受け取るパラメーターを定義します。 プロシージャが未処理のエラーなしで完了すると、最終的なパラメーター値が出力として返されます。
アウト
出力パラメーターを定義します。 パラメーターは
NULL
に初期化され、プロシージャが未処理のエラーなしで完了すると、最終的なパラメーター値が出力として返されます。
-
サポートされるすべてのデータ型。
DEFAULT default_expression
関数呼び出しでパラメーターに引数が割り当てられない場合に使用される省略可能な既定値。
default_expression
は にdata_type
でなければなりません。 この式は、別のパラメーターを参照したり、サブクエリを含めたりすることはできません。あるパラメーターに既定値を指定すると、以降のすべてのパラメーターにも既定値が必要になります。
DEFAULT
は、OUT
パラメーターではサポートされていません。COMMENT コメント
パラメーターの説明 (省略可能)。
comment
は、STRING
リテラルにする必要があります。
-
-
SQL プロシージャの定義を含む SQL 複合ステートメント (
BEGIN ... END
)。プロシージャが作成されると、構文の正確性が検証されます。 プロシージャ本体は、プロシージャが呼び出されるまでセマンティックの正確性を検証しません。
特性
特性
SQL SECURITY INVOKER
とLANGUAGE SQL
が必要です。 その他はすべて省略可能です。 任意の順序で任意の数の特性を指定できますが、各句は 1 回だけ指定できます。LANGUAGE SQL
関数実装の言語。
SQL SECURITY INVOKER
プロシージャーの本体内のすべての SQL ステートメントを、プロシージャーを呼び出すユーザーの権限の下で実行することを指定します。
プロシージャの本体内でリレーションとルーチンを解決する場合、Azure Databricks では、呼び出し時に現在のカタログと現在のスキーマが使用されます。
非決定性
プロシージャは非決定的であると見なされます。つまり、同じ引数で呼び出された場合でも、呼び出しごとに異なる結果を返すことができます。
コメント procedure_comment
手順に対するコメント。
procedure_comment
はSTRING
リテラルである必要があります。 既定値はNULL
です。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 'forma' THEN SELECT 'Pleased to meet you.';
END CASE;
END;
> CALL greeting('informal');
Hi!
> CALL greeting('formal');
Pleased to meet you.
> CALL greeting('casual');
Hello!