我有一个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(?)}
并且无法更改....
有没有办法实现这个?
答案 0 :(得分:1)
解决方案是使用refcursor作为返回类型。
OPEN ref_cursor FOR EXECUTE dynamic_sql;
return ref_cursor;