CREATE FUNCTION
功能描述
创建一个自定义函数。
语法格式
1 2 3 4 5 6 7 8 9 10 11 12 |
CREATE FUNCTION function_name ( [ { argname argtype } ] [, ...] ] ) [ RETURNS rettype ] LANGUAGE lang_name [ { IMMUTABLE | STABLE | VOLATILE } ] RUNTIME_VERSION = { 'version' } HANDLER = 'function_name' COMMENT = 'comment' [ STRICT ] [ PACKAGES = ( 'package_name==[version]' [ , ...] ) ] [ IMPORTS = ( 'obs_file_path' ) ] [ AS 'definition' ] |
参数说明
参数 |
描述 |
取值范围 |
---|---|---|
function_name |
要创建的函数名字(可以用模式修饰)。 |
字符串,需符合标识符的命名规范。 创建函数时,建议指定schema,否则会在默认的schema default_db下创建函数。调用自定义函数时必须指定schema,否则系统会调用系统内置函数。 |
argname |
函数参数的名字。 |
字符串,需符合标识符的命名规范。 |
argtype |
函数参数的类型。 |
详情请参见数据类型映射。 |
rettype |
函数返回值的数据类型。 |
详情请参见数据类型映射。 |
LANGUAGE lang_name |
用于实现函数的语言的名字。自定义函数仅支持Python。 |
- |
IMMUTABLE |
表示该函数在给出同样的参数值时总是返回同样的结果。 |
如果函数的入参是常量,会在优化器阶段计算该函数的值。优势是可以尽早获取表达式的值,从而能更准确地进行代价估算,生成的执行计划也更优。 |
STABLE |
表示该函数不能修改数据库,对相同参数值,在同一次表扫描里,该函数的返回值不变,但是返回值可能在不同SQL语句之间变化。 |
- |
VOLATILE |
表示该函数值可以在一次表扫描内改变,因此不会做任何优化。 |
- |
PACKAGES |
表示该函数运行时环境所依赖的Python三方包。 |
- |
RUNTIME_VERSION |
表示函数运行时环境的Python的具体版本。当前仅支持指定为3.11系列。 |
- |
HANDLER |
表示函数的主函数入口。 |
- |
IMPORTS |
表示函数运行时所依赖在OBS的压缩包路径 |
IMPORTS子句中只能引入一个路径,即一个压缩包。 |
STRICT |
STRICT用于指定如果函数的某个参数是NULL,此函数总是返回NULL。如果声明了这个参数,当有NULL值参数时该函数不会被执行;而只是自动返回一个NULL结果。 |
- |
definition |
函数体的具体实现。 |
默认为null,其长度不能超过1000字符。 |
comment |
对函数的描述信息。 |
- |