Postgresql - plpgsql - 从Function中查询并返回多行结果

通过plpgsql查询表,并返回多行的结果。

 

创建实验表插入数据参考之前文章

 

返回查询结果

mytest=# create or replace function test_0830_5() returns setof test

mytest-# as $$

mytest$# DECLARE

mytest$# r test%rowtype; -- 将

mytest$# BEGIN

mytest$# FOR r IN

mytest$# SELECT * FROM test WHERE id > 0

mytest$# LOOP

mytest$# RETURN NEXT r;

mytest$# END LOOP;

mytest$# RETURN;

mytest$# END

mytest$# $$ language plpgsql;

CREATE FUNCTION

 

mytest=# select test_0830_5(1);

test_0830_5

------------------------------------------

(2,abcabc,"2018-08-30 09:26:14.392187")

......

(11,abcabc,"2018-08-30 09:26:14.392187")

(10 rows)

 

mytest=# select * from test_0830_5();

id | col1 | col2

----+--------+----------------------------

2 | abcabc | 2018-08-30 09:26:14.392187

......

11 | abcabc | 2018-08-30 09:26:14.392187

(10 rows)

 

 

返回某列

mytest=# CREATE OR REPLACE FUNCTION test_0830_6(date) RETURNS SETOF integer AS $$

mytest$# BEGIN

mytest$# RETURN QUERY SELECT id

mytest$# FROM test

mytest$# WHERE col2 >= $1

mytest$# AND col2 < ($1 + 1);

mytest$# IF NOT FOUND THEN

mytest$# RAISE EXCEPTION 'No id at %.', $1;

mytest$# END IF;

mytest$# RETURN;

mytest$# END

mytest$# $$

mytest-# LANGUAGE plpgsql;

CREATE FUNCTION

mytest=# select test_0830_6('2018-08-30');

test_0830_6

-------------

2

......

11

(10 rows)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值