sql - 如何返回另一个 plpgsql 函数的内容?
问题描述
我有一个 plpgsql 函数func
,它返回一个setof integer
. 我现在有另一个func2
应该调用和返回的函数func
。我应该使用return next func()
还是return query select func()
在这里?执行和性能有区别吗?还是我应该做点别的?
create function func2() returns setof integer as $$
begin
if true then -- logic omitted here
return next func();
-- return query select func();
end if;
end;
$$ language plpgsql;
我知道我可以将结果存储func()
到本地声明的变量中,但我认为这里不需要。如果我错了,请纠正我。
我通读了文档,只能找到return next
并return query select
作为返回本地声明变量的替代方法。但我不清楚在这种情况下两者之间是否存在差异,如果有的话。
旁注,return func()
似乎不可能,这令人惊讶的是来自常规过程语言(主要是 C++ 和 Java)的背景。
解决方案
RETURN NEXT func()
行不通,因为那只能返回一个值。为此,您必须遍历 的结果func()
并返回每个结果RETURN NEXT
,这是不必要的复杂。
它更容易使用
RETURN QUERY SELECT func();
func()
在单个语句中返回所有结果值。
PL/pgSQL 在语法上与 C++ 完全不同。它复制了 Oracle 的 PL/SQL,而后者又源自 ADA。
推荐阅读
- date - 如何在雪花中更改一年的开始日期?
- common-lisp - Common Lisp 似乎不理解脚本中的 cdr 请求,但在 REPL 中理解它
- python-3.x - 有没有办法连接字符串中的字符,以便字母之间没有空格?
- python - 运行 Python 时隐藏终端
- string - 如何在另一个中调用这个函数?
- ios - 如何让我的 JSON 数据显示在 tableview 中
- amazon-web-services - ECS 实例无法排空?
- java - 从无限匹配列表输入制作足球排名
- python - Pandas - 过滤另一列中只有一个值的列的值
- amazon-quicksight - Quicksight - 比较本周(未完成)的销售额与上周(苹果对苹果)的销售额