jooq 中具有动态名称的存储过程
Stored procedures in jooq with dynamic names
我想在 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');
哪个returns:
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对象数组的数组中
有什么想法吗?
前进的方向是使用 plain SQL 如下:
Name name = DSL.name("report_" + name);
QueryPart arguments = DSL.list(params);
dsl().select().from("{0}({1})", name, arguments).fetch();
请注意,我已将函数名称包装在 DSL.name()
对象中,以防止 SQL 注入。
我想在 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');
哪个returns:
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对象数组的数组中
有什么想法吗?
前进的方向是使用 plain SQL 如下:
Name name = DSL.name("report_" + name);
QueryPart arguments = DSL.list(params);
dsl().select().from("{0}({1})", name, arguments).fetch();
请注意,我已将函数名称包装在 DSL.name()
对象中,以防止 SQL 注入。