函数调用¶
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;