更新时间:2025-07-08 GMT+08:00
分享

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' ]

参数说明

表1 CREATE FUNCTION参数说明

参数

描述

取值范围

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

对函数的描述信息。

-

相关文档