绑定完请刷新页面
取消
刷新

分享好友

×
取消 复制
返回语句-RETURN NEXT及RETURN QUERY
2020-01-16 15:31:09

语法

创建函数时需要指定返回值SETOF datatype。

return_next_clause::=

return_query_clause::=

对以上语法的解释如下:

当需要函数返回一个集合时,使用RETURN NEXT或者RETURN QUERY向结果集追加结果,然后继续执行函数的下一条语句。随着后续的RETURN NEXT或RETURN QUERY命令的执行,结果集中会有多个结果。函数执行完成后会一起返回所有结果。

RETURN NEXT可用于标量和符合数据类型。

RETURN QUERY有一种变体RETURN QUERY EXECUTE,后面还可以增加动态查询,通过USING向查询插入参数。

示例

CREATE TABLE t1(a int);
INSERT INTO t1 VALUES(1),(10);
--RETURN NEXT
CREATE OR REPLACE FUNCTION fun_for_return_next() RETURNS SETOF t1 AS $$
DECLARE
r t1%ROWTYPE;
BEGIN
FOR r IN select * from t1
LOOP
RETURN NEXT r;
END LOOP;
RETURN;
END;
$$ LANGUAGE PLPGSQL;
postgres=# call fun_for_return_next();
a
---
1
10
(2 rows)
-- RETURN QUERY
CREATE OR REPLACE FUNCTION fun_for_return_query() RETURNS SETOF t1 AS $$
DECLARE
r t1%ROWTYPE;
BEGIN
RETURN QUERY select * from t1;
END;
$$
language plpgsql;
postgres=# call fun_for_return_next();
a
---
1
10
(2 rows)


分享好友

分享这个小栈给你的朋友们,一起进步吧。

GaussDB_数据库
创建时间:2020-01-06 16:21:44
华为GaussDB数据库小栈
展开
订阅须知

• 所有用户可根据关注领域订阅专区或所有专区

• 付费订阅:虚拟交易,一经交易不退款;若特殊情况,可3日内客服咨询

• 专区发布评论属默认订阅所评论专区(除付费小栈外)

技术专家

查看更多
  • GaussDB_数据库
    专家
戳我,来吐槽~