VastbaseG100

基于openGauss内核开发的企业级关系型数据库。

Menu

WITH FUNCTION

功能描述

with function功能实现了在with语句中定义临时函数,在后续的子语句中可以重复使用该函数。

注意事项

无。

语法格式

WITH { FUNCTION func_name ( [ [ argmode ] [ argname ] argtype [ { DEFAULT | = } default_expr ] [, ...] ] )
    [ RETURNS rettype
      | RETURNS TABLE ( column_name column_type [, ...] ) ] AS 'definition' } [, ...]
{ SelectStmt }

参数说明

  • func_name

    自定义的函数名称。

    取值范围:字符串,要符合标识符命令规范。

  • argmode

    函数参数的模式。

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

  • argname

    函数参数的名称。

    取值范围:字符串,要符合标识符命令规范。

  • argtype

    函数参数的类型。

  • default_expr

    如果参数没有被指定值时要用作默认值的表达式。

  • rettype

    函数返回值的数据类型。

    如果存在OUT或IN OUT参数,可以省略RETURNS子句。

    如果出现了rettype,那么它必须和输出参数隐含的结果类型兼容:

    • 如果有多个输出参数,必须是 RECORD。

    • 如果只有一个输出参数,则与其相同。

  • column_name

    字段名称。

  • column_type

    字段类型。

  • definition

    定义函数。

    一个defination的字符串长度和含义取决于语言,它可以是一个内部函数名称、一个指向某个目标文件的路径、一个SQL查询、一个过程语言文本。

  • SelectStmt

    结构化查询语句,通常使用SELECT关键字表示。

示例

使用WITH FUNCTION字句调用函数。

WITH FUNCTION withfunc (x integer) RETURNS INTEGER AS $$
BEGIN
RETURN x+1;
END
$$,
FUNCTION withfunc2(x INTEGER, y INTEGER) RETURNS INTEGER AS $$
BEGIN
RETURN x+y;
END;
$$,
FUNCTION withfunc3(x TEXT) RETURNS TEXT AS $$
BEGIN
RETURN x || '-test';
END;
$$
SELECT withfunc(1),withfunc2(2,3),withfunc3('4');

当结果显示如下,则表示函数调用成功:

 withfunc | withfunc2 | withfunc3
----------+-----------+-----------
        2 |         5 | 4-test
(1 row)

相关链接