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

関数が決定性であるかどうか。NOT DETERMINISTICは、関数が非決定性である可能性があることを意味します。

Null呼び出し句

CALLED ON NULL INPUT

nullが少なくとも1つの引数の値として提供される場合の関数の動作。

新しい関数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

参照

ALTER FUNCTIONDROP FUNCTIONSHOW FUNCTIONS