创建函数

概要

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 表示该函数可能是非确定性的。

空调用子句

在空输入上调用

函数的行为,其中 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

另请参阅

修改函数, 删除函数, 显示函数