sql - PostgreSQL-动态sql内部函数?

标签 sql postgresql dynamic-sql

我有一个将一个字符串作为参数的 PostgreSQL 函数/这是动态 sql 查询/并执行该动态 SQL,我希望得到动态查询的结果。

似乎在 PostgreSQL 中我应该预定义我将返回的内容 - 但这是不可能的,因为我正在执行动态语句,有时我会返回一个 int 列,有时我会返回 5 个 varchar 列....

另一件事是现有的 jdbc 代码将调用该函数——我无法更改它——我无法像这样动态定义类型:

{call execute_dynamic(?) as (a varchar(255),b int)};

The code that will call the procedure is: 

{call execute_dynamic(?)}

并且无法更改....

有没有办法实现这个?

最佳答案

解决方案是使用 refcursor 作为返回类型。

OPEN ref_cursor FOR EXECUTE dynamic_sql;
 return ref_cursor;

关于sql - PostgreSQL-动态sql内部函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19162226/

相关文章:

php - 为社交网站创建提要

sql - 需要检索表 A 中的所有记录,并且只检索表 B 中最后更新的一条记录

sql - 分区表上的 Postgres 查询比非分区表慢 2 倍

performance - 直接查询比使用 join 的子查询慢得多

sql - 如何保证动态SQL存储过程的安全?

SQL Server 2008 big INSERT 在事务中包装后仍然很慢

mysql - 查询整个文件,但按单独的数据查询,按每个唯一列元素分组

oracle - 在 Oracle PL/SQL 中使用 OPEN...FOR 动态 SQL 结构时多次重复相同的绑定(bind)变量

sql - 错误: there is no unique constraint matching given keys for referenced table "bar"

PostgreSQL:将列中的函数存储为值