创建函数¶
概要¶
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 |
定义函数的语言。 |
确定性特性 |
非确定性 |
函数是否确定性。 |
空调用子句 |
在空输入上调用 |
函数的行为,其中 |
示例¶
创建一个新函数 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