我想动态调用JOOQ中PostgreSQL的存储过程:
final Field function = function("report_" + name, Object.class, (Field[])params.toArray(new Field[params.size()]));
dsl().select(function).fetchArrays();
例如,它会生成:
select report_total_requests('83.84.85.3184');
返回:
report_total_requests
-----------------------
(3683,2111,0)
(29303,10644,1)
在java中,它是“(3683,2111,0)”对象的数组。
我想生成:
select * from report_total_requests('83.84.85.3184')
生产:
total | users | priority
------+-------+----------
3683 | 2111 | 0
29303 | 10644 | 1
那是在对象数组的java数组中
有什么想法吗?
答案 0 :(得分:2)
前进的方法是使用plain SQL,如下所示:
Name name = DSL.name("report_" + name);
QueryPart arguments = DSL.list(params);
dsl().select().from("{0}({1})", name, arguments).fetch();
注意,我已将函数名称包装在DSL.name()
对象中,以防止SQL注入。