use*_*875 5 java sql postgresql jooq
我正在寻找从用户定义的函数进行查询。select我见过的所有示例都是以参数形式查询函数
myFunction.setMyParam("plapla");
create.select(myFunction.asField()).fetch();
Run Code Online (Sandbox Code Playgroud)
尽管结果实际上是多列,但这会将结果作为一列返回。
我想做的是
myFunction.setMyParam("plapla");
create.select().from(myFunction).fetch();
Run Code Online (Sandbox Code Playgroud)
但我还没有找到办法这样做......
目前我正在使用
DSL.using(create.configuration())
.select()
.from("myFunction('" + myparam + "')")
.fetch();
Run Code Online (Sandbox Code Playgroud)
这似乎不是一个好的解决方案(未转义、未经处理等)
如何使用JOOQ生成的函数来做到这一点?
jOOQ 生成 PostgreSQL 表值函数的函数调用。如果你的函数如下所示:
CREATE FUNCTION my_function(text, integer, text)
RETURNS TABLE (myParams text) AS ...
Run Code Online (Sandbox Code Playgroud)
然后 jOOQ 产生以下方法:
public class Tables {
...
public static MyFunction myFunction(String param1, Integer param2, String param3)
{ ... }
}
Run Code Online (Sandbox Code Playgroud)
然后您可以这样调用:
Result<MyFunctionRecord> result =
DSL.using(create.configuration())
.selectFrom(myFunction("a", 1, "b")
.fetch();
Run Code Online (Sandbox Code Playgroud)
结果记录将采用以下形式:
public class MyFunctionRecord {
...
public String getMyParams() { ... }
}
Run Code Online (Sandbox Code Playgroud)