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 的實際類型相符,而不執行類型強制轉換。

可以指定一組例行特徵來裝飾函數並指定其行為。每種例行特徵最多可以指定一次。

例行特徵

預設值

描述

語言子句

SQL

定義函數的語言。

決定性特徵

NOT DETERMINISTIC

函數是否具有決定性。NOT DETERMINISTIC 表示函數可能不具有決定性。

空值呼叫子句

CALLED ON NULL INPUT

null 作為至少一個參數的值提供時,函數的行為。

範例

建立一個新的函數 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