函数调用

PLOSCAR表达式中的操作数可以是一个PLOSCAR函数的调用。

语法:

proc_call ::=

param_list ::=

param ::=

参数:

func_name PLOSCAR函数名,或者内建函数名

expression PLOSCAR表达式

说明:

过程调用中实际参数<param>的类型必须匹配函数func_name定义中形式参数声明

<parameter_declaration>的类型。

PLOSCAR支持递归调用,在一个函数内部可以调用它自己。

示例:简单函数调用

--  清理环境
DROP FUNCTION add_one(INT) CASCADE;

create or replace function add_one(i int) return int as
begin
    return i + 1;
end;

/

--合法的函数调用
select add_one(4);
ADD_ONE(int)      |
------------------
5                 |
总数目:1

--不合法的函数调用
select add_one('hello'); --'hello'类型和int不匹配
ERROR, 错误的数值格式 'hello'


--  删除函数
DROP FUNCTION add_one(INT) CASCADE;

示例:递归函数调用

--  清理环境
DROP FUNCTION myfactor(integer) CASCADE;

--递归求阶乘
create or replace function myfactor(i integer) return bigint as
begin
    if(i=0) then
        return 1;
    end if;
    
    return i * myfactor(i-1);
end;

/
select myfactor(5);-----执行之后结果应该是120.
MYFACTOR(bigint)      |
----------------------
120                   |
总数目:1

--  删除函数
DROP FUNCTION myfactor(integer) CASCADE;