函数常见有两种:一种是系统函数,另一种是用户自定义函数,简称UDF。
本文主要讨论用户自定义函数的几种调用方式
第一种方式是返回常规类型的标量
select f1();
第二种方式是返回复合类型,例如自定义类型
select (f2()).*;
第三种方式是返回表集合,例如自定义类型
select * from f3();
示例如下:
create table tab(c1 int,c2 text);
create or replace function f3()
returns setof tab
as $function$
declare
begin
return query
select 100 as c1,'aaa' as c2
union all
select 200 ,'ccc'
order by c2;
end;
$function$ language plpgsql;
函数调用如下:
postgres=# select * from f3();
c1 | c2
-----+-----
100 | aaa
200 | ccc
(2 rows)
第四种方式是返回record集合
select * from f4() as (...);
示例如下:
create or replace function f4()
returns setof record
as $function$
declare
begin
drop temporary table if exists tab2;
create temporary table tab2
as
select 100 as c1,'aaa' as c2;
insert into tab2 (c1, c2)
select 200 ,'ccc';
return query select * from tab2 order by c1;
end;
$function$ language plpgsql;
函数调用时需要使用as进行字段定义:
postgres=# select a,b from f4() as (a int,b text);
a | b
-----+-----
100 | aaa
200 | ccc
(2 rows)
第五种方式调用方式是使用perform替代select
当我们不需要返回结果给客户端时,比如后台存储过程、UDF内部之间的逻辑流程判断等
perform f5();
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




