金仓数据库KingbaseES PLSQL创建函数参数默认值
关键字:
Create function、默认值、人大金仓、KingbaseES
PLSQL创建函数参数默认值设置方法
在创建plsql函数时,可以为函数的参数设置默认值,在调用时可以不传已经设置好默认值的参数即可直接以默认值调用。
kingbase支持以下三种在创建函数时给参数设置默认值的方法,它们是等价的:
1. :=赋值 示例如下:
\set SQLTERM /
create procedure pr1(a int:=0) as
begin
raise notice '%',a;
end;
/
\set SQLTERM ;
call pr1();
drop procedure pr1;
- =赋值 示例如下:
\set SQLTERM /
create procedure pr1(a int=0) as
begin
raise notice '%',a;
end;
/
\set SQLTERM ;
call pr1();
drop procedure pr1;
3.default赋值 示例如下:
\set SQLTERM /
create procedure pr1(a int default 0) as
begin
raise notice '%',a;
end;
/
\set SQLTERM ;
call pr1();
drop procedure pr1;
2.默认值设置位置与调用函数传参位置之间的关系
假设函数有三个参数,当对任意参数设置默认值后,在进行传参时,如果传参数量小于3,则所传入的参数会和函数的前两个参数进行匹配,无论是否设置默认值,而当第三个参数没有设置默认值时,这个参数会默认被认为是NULL。如下方示例所示:
示例1、创建函数的第一个参数被设置默认值为0,只传递两个参数:
\set SQLTERM /
create procedure pr1(a int default 0,b int,c int) as
begin
raise notice '% % %',a,b,c;
end;
/
\set SQLTERM ;
call pr1(1,1);
drop procedure pr1;
如上图可以看出,前两个参数被赋值为1,而最后一个参数被设置为NULL。
示例2、创建函数的第二个参数被设置默认值为0,只传递两个参数:
\set SQLTERM /
create procedure pr1(a int ,b int default 0,c int) as
begin
raise notice '% % %',a,b,c;
end;
/
\set SQLTERM ;
call pr1(1,1);
drop procedure pr1;
如上图可以看出,前两个参数被赋值为1,而最后一个参数被设置为NULL。
示例3、创建函数的第三个参数被设置默认值为0,只传递两个参数:
\set SQLTERM /
create procedure pr1(a int ,b int,c int default 0) as
begin
raise notice '% % %',a,b,c;
end;
/
\set SQLTERM ;
call pr1(1,1);
drop procedure pr1;
如上图可以得出,前两个参数被赋值为1,而最后一个参数按照默认值被设置为0。