PostgreSQL函数或输出多列的存储过程?
这是我理想的想法。想象一下,我有一张A行的桌子。
我想要做:
SELECT A, func(A) FROM table
并为输出说4列。
有没有办法做到这一点?我已经看到了自定义类型或任何可以让你得到一个看起来像的结果的东西
A B C D)
但是,如果我能让一个函数返回多个列而不再进行重新分析,那将会非常棒。
有没有什么可以做这样的事情?
没有找到相关结果
已邀请:
4 个回复
熊融炭臀陛
然后你执行
你会得到:
但是,如果你执行:
你会得到:
或者,使用CTE(公用表表达式),如果执行:
你还会得到:
注意:您还可以使用以下查询来获得相同的结果:
要么
街茬
,从我的测试开始,实际上会为每个返回的列执行一次函数,而CTE表达式只执行一次函数。因此,如果函数需要很长时间才能执行,则首选CTE表达式。
捅瓶啡
如果您可以从视图中访问该表,也许您可以以某种方式创建视图
然后它只是一个
。但是这看起来似乎可以使用继承。
磨标烫徽啪
。这将允许您返回包含任意数量列的匿名变量。您可以在此处找到有关所有不同变量的更多信息: http://www.postgresql.org/docs/9.0/static/plpgsql-declarations.html 关于退货类型: http://www.postgresql.org/docs/9.0/static/xfunc-sql.html#XFUNC-OUTPUT-PARAMETERS 如果要返回包含多个列的多个记录,请首先检查并查看是否必须使用存储过程。可以选择使用
(并用WHERE子句查询)。如果这不是一个好的选择,则有可能从版本9.0中的存储过程返回
。