如何运行从 postgresql 中的函数生成的查询
Posted
技术标签:
【中文标题】如何运行从 postgresql 中的函数生成的查询【英文标题】:How to run a query generated from a function in postgresql 【发布时间】:2019-03-15 20:13:56 【问题描述】:长话短说,我有一个由 plpgsql 在 postgres 中编写的函数,这个函数可以帮我在结果中生成一个 'select * from crosstab.....'
语句,这样我就不必手动输入数百个列名此语句中的数据透视表。因此,现在如果我只是将此语句复制粘贴到另一个查询工具中并运行它,我可以获得输出中生成的数据透视表。但是,正如您所发现的,此过程涉及人工工作,因此不是自动的,我尝试了一些类似 EXECUTE function('which returns the statement I want')
的方法,但我还没有找到解决方案...
为了澄清我在问什么,这里我可以用一个非常简单的例子来表达。
select 1+1
返回 2
现在我想使用另一个关键字,即EXECUTE 'select 1+1'
也返回 2,我该怎么做?我已经找了一段时间了,请帮忙。谢谢。
【问题讨论】:
相关:PL/pgSQL functions: How to return table with an execute statement. 相关,但与我的目的不太接近。因为我拥有该功能的原因是让该功能自动为我创建了所有数百列,但在链接中看起来我需要创建另一个函数,我将列出我需要的所有数百列。 "如果你想从动态 SELECT 查询返回值you need to create a function"。 感谢提示,正在研究中。 【参考方案1】:你能把你的查询写到一个文件中,例如doit.sql吗? 然后在 psql 命令行编辑器中你可以说
# \i doit.sql
【讨论】:
我相信我会在一个地方需要所有东西:创建或替换函数 func():........; --然后立即再次运行此函数结果以上是关于如何运行从 postgresql 中的函数生成的查询的主要内容,如果未能解决你的问题,请参考以下文章
如何将从函数返回的布尔值分配给 PostgreSQL 9.4 中的变量?
如何使用 PostgreSql 中的子字符串函数从字符串中提取单词