【发布时间】:2016-10-25 12:01:40
【问题描述】:
我想在 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数组中的对象数组
有什么想法吗?
【问题讨论】:
-
您有什么理由不想为此使用代码生成器吗?因为生成的函数名?
-
是的,报表函数来自客户端,但不带前缀以避免执行任何函数
-
我明白了,那么您肯定想将该名称包装到
org.jooq.Name对象中以防止 SQL 注入,正如我在回答中所展示的那样
标签: java postgresql stored-procedures jooq