CREATE FUNCTION¶
概要¶
CREATE [ OR REPLACE ] [TEMPORARY] FUNCTION
qualified_function_name (
parameter_name parameter_type
[, ...]
)
RETURNS return_type
[ COMMENT function_description ]
[ LANGUAGE [ SQL | identifier] ]
[ DETERMINISTIC | NOT DETERMINISTIC ]
[ RETURNS NULL ON NULL INPUT | CALLED ON NULL INPUT ]
[ RETURN expression | EXTERNAL [ NAME identifier ] ]
説明¶
指定された定義で新しい関数を作成します。
TEMPORARY
が指定されている場合、作成された関数は現在のセッション内では有効で表示されますが、永続的なエントリは作成されません。
各永続関数は、修飾された関数名とそのパラメータ型リストによって一意に識別されます。qualified_function_name
は、catalog.schema.function_name
の形式である必要があります。
各一時関数は、関数名によって一意に識別されます。名前は修飾したり、既存の組み込み関数の名前と衝突したりすることはできません。
永続関数を作成するには、対応する関数名前空間(catalog.schema
の形式)が、最初に関数名前空間マネージャーによって管理されている必要があります(関数名前空間マネージャーを参照)。
オプションのOR REPLACE
句を使用すると、同一のシグネチャ(パラメータ型リストを持つ関数名)の関数が存在する場合、クエリは既存の関数を静かに置き換えます。
return_type
は、型強制を実行せずに、ルーチン本体expression
の実際の型と一致する必要があります。
ルーチンの特性のセットを指定して、関数を装飾し、その動作を指定できます。各種類のルーチン特性は、最大で1回指定できます。
ルーチン特性 |
デフォルト値 |
説明 |
---|---|---|
言語句 |
SQL |
関数が定義されている言語。 |
決定性特性 |
NOT DETERMINISTIC |
関数が決定性であるかどうか。 |
Null呼び出し句 |
CALLED ON NULL INPUT |
|
例¶
新しい関数example.default.tan(double)
を作成します。
CREATE FUNCTION example.default.tan(x double)
RETURNS double
DETERMINISTIC
RETURNS NULL ON NULL INPUT
RETURN sin(x) / cos(x)
関数記述を追加し、サポートされているすべてのルーチン特性を明示的にリストすることで、テーブルexample.default.tan(double)
が存在しない場合は作成します。
CREATE OR REPLACE FUNCTION example.default.tan(x double)
RETURNS double
COMMENT 'tangent trigonometric function'
LANGUAGE SQL
DETERMINISTIC
RETURNS NULL ON NULL INPUT
RETURN sin(x) / cos(x)
新しい一時関数square
を作成します。
CREATE TEMPORARY FUNCTION square(x int)
RETURNS int
RETURN x * x