GBase 8c
其他
文章

GBase 8c存储函数/存储过程参数说明

发表于2023-12-13 14:56:34119次浏览1个评论

参数说明:

l name:要创建的函数的名称(可以被模式修饰),取值范围:字符串;

l argmode:函数参数的模式,取值范围:IN、OUT、INOUT或者VARIADIC,缺省为IN。只有OUT模式的参数后面能跟VARIADIC(VARIADIC用于声明数组类型的参数),且OUT和INOUT模式的参数不能用在RETURNS TABLE符的函数定义中;

l argname:函数参数的名称,取值范围:字符串;

l argtype:函数参数的数据类型;

l default_expr:参数的默认表达式;

l rettype:函数返回值的数据类型,如果有OUT或IN OUT参数,可以省略RETURNS子句,如果未省略则RETURNS子句必须和输出参数表示的结果类型一致:若多个输出参数,则为RECORD否则与单个输出参数的类型相同。SETOF修饰词表示该函数将返回一个集合,而不是单独一项;

l column_name:字段名称;

l column_type:字段类型;

l lang_name:用以实现函数的语言的名字。可以是SQL,C,internal,或者是用户定义的过程语言名字。为了保证向下兼容,该名字可以用单引号(包围)。若采用单引号,则引号内必须为大写;

l TRANSFORM { FOR TYPE type_name } [, ... ] }:类型转换的列表,适用于对函数的调用;

l WINDOW:表示该函数是窗口函数,通常只用于C语言编写的函数。替换函数定义时不能改变WINDOW属性;

l IMMUTABLE:表示该函数在给出同样的参数值时总是返回同样的结果;

l STABLE:表示该函数不能修改数据库,对相同参数值,在同一次表扫描里,该函数的返回值不变,但是返回值可能在不同SQL语句之间变化;

l VOLATILE:表示该函数值可以在一次表扫描内改变,因此不会做任何优化;

l LEAKPROOF:指出该函数的参数只包括返回值。LEAKPROOF只能由系统管理员设置;

l CALLED ON NULL INPUT:表明该函数的某些参数是NULL的时候可以按照正常的方式调用。该参数可以省略;

l RETURNS NULL ON NULL INPUT | STRICT:RETURNS NULL ON NULL INPUT或STRICT用于指定如果函数的某个参数是NULL,此函数总是返回NULL。如果声明了这个参数,当有NULL值参数时该函数不会被执行;而只是自动返回一个NULL结果;

l [EXTERNAL] SECURITY INVOKER:表明该函数将带着调用它的用户的权限执行,该参数可以省略,EXTERNAL为可选参数;

l [EXTERNAL] SECURITY DEFINER:声明该函数将以创建它的用户的权限执行EXTERNAL为可选参数;

l PARALLEL:表示该函数是否可以下推到DN上执行。PARALLEL UNSAFE表示该函数不能下推到DN上执行且强制使用顺序执行计划,为默认选项;PARALLEL RESTRICTED表示该函数能下推到DN上执行,但是要求必须在DN Leader上执行;PARALLEL SAFE表示该函数能下推到DN上执行,安全且不受限制;

l execution_cost:用来估计函数的执行成本,execution_cost以cpu_operator_cost为单位,取值范围为正数;

l result_rows:估计函数返回的行数,用于函数返回的是一个集合,取值范围为正数,默认值1000行;

l configuration_parameter:把指定的数据库会话参数值设置为给定的值,如果value是DEFAULT或者RESET,则在新的会话中使用系统的缺省设置。OFF关闭设置,取值范围为字符串;

l definition:定义该函数的字符串常量,可以是内部函数名、对象文件的路径、SQL命令或者用过程语言编写的文本;

l obj_file, link_symbol:适用于C语言函数,字符串obj_file指定了动态库的绝对路径;link_symbol 指定了该函数的链接符号,也就是该函数在C代码中的函数名称;

l attribute:函数可选信息,取值范围:isStrict(等效于STRICT或者RETURNS NULL ON NULL INPUT)、isCachable(等效于IMMUTABLE)。

评论

登录后才可以发表评论
GBase用户51890发表于 2个月前
继续努力