postgresql - SELECT FROM 返回具有任意列数的记录的函数

标签 postgresql stored-procedures types record plpgsql

我正在使用 PostgreSQL 数据库。

我有一个 plpgsql FUNCTION,它返回一个包含任意数量列的 record
由于这种任意性,我需要使用类似的东西:

SELECT * FROM my_function(97)

但这不起作用,因为 Postgres 给我以下错误:

a column definition list is required for functions returning "record"

但如果我这样做:

SELECT my_function(97)

我可以看到预期的结果,但封装在一个列中。

有没有办法按照函数的预期将预期结果作为一组列获取,而不是将所有列封装起来?

最佳答案

当函数只是RETURNS recordSETOF record(并且没有OUT 参数)时,PostgreSQL 不知道名字及其元素的类型,您需要在每次调用时提供列定义列表。

尽可能避免这种情况,并返回一个众所周知的(行)类型。有几种方法可以声明返回类型。见:

SO上有不少相关问题。 Try a search!

关于postgresql - SELECT FROM 返回具有任意列数的记录的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9164031/

相关文章:

sql - 在 PostgreSQL 函数中声明并返回自定义类型

c++ - 正确的 set_socket_init_handler 语法或修改源代码以使用 websocket++ 打开 TCP_NODELAY

javascript - 为什么 JavaScript 按位或行为异常?

sql - 为什么 null||null 返回空值但 concat(null,null) 在 postgres 中返回空字符串?

ruby-on-rails - PG::UndefinedFunction: 错误:运算符不存在:文本 = bool 值

python - 使用 Flask-SQLAlchemy 中的存储过程调用将 POST 方法发送到 SQL

c++ - 如何在 C++ 中使用泛型 vector

postgresql - 如何更新 postgresql 中的 jsonb 列,它只是一个值数组,没有键

Postgresql - 在特定时间和日期范围之间进行选择

c# - SQL查询选择谜题