暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

磐维数据库函数调用的几种方式

wzg 2025-12-06
150

函数常见有两种:一种是系统函数,另一种是用户自定义函数,简称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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论