如何运行从 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 中的函数生成的查询的主要内容,如果未能解决你的问题,请参考以下文章

如何从 CSV 为 PostgreSQL 副本生成模式

如何将从函数返回的布尔值分配给 PostgreSQL 9.4 中的变量?

如何使用 PostgreSql 中的子字符串函数从字符串中提取单词

如何获取 PostgreSQL 数据库中的函数列表及其参数?

如何从 VBA 代码执行 PostgreSQL 函数?

从 PostgreSQL 中的行生成系列