表值PostgreSQL函數獲取結果我有一個PostgreSQL函數返回表從JOOQ
CREATE OR REPLACE FUNCTION test_func(IN param1 text, IN param2 integer)
RETURNS TABLE(result1 text, result2 integer) AS
$BODY$
BEGIN
result1 := 'aa';
result2 :=1;
return next;
result1 := 'bb';
result2 :=2;
return next;
END
$BODY$
LANGUAGE plpgsql
查詢在PG-管理員返回正確的結果
select * from test_func('aaa', 23);
result1 | result2
"aa" | 1
"bb" | 2
JOOQ產生一如既往
功能...
public class TestFunc extends org.jooq.impl.AbstractRoutine<java.lang.Void> {
...
public TestFunc() {
super("test_func", ee.tavex.tavexwise.db.public_.Public.PUBLIC);
addInParameter(PARAM1);
addInParameter(PARAM2);
addOutParameter(RESULT1);
addOutParameter(RESULT2);
}
...
and in routine例如
...
public static ee.tavex.tavexwise.db.public_.routines.TestFunc testFunc(org.jooq.Configuration configuration, java.lang.String param1, java.lang.Integer param2) {
ee.tavex.tavexwise.db.public_.routines.TestFunc p = new ee.tavex.tavexwise.db.public_.routines.TestFunc();
p.setParam1(param1);
p.setParam2(param2);
p.execute(configuration);
return p;
}
我把它叫做這樣
TestFunc records = Routines.testFunc(dslConfiguration, "xx", 10);
records.getResults() //returns empty List
records.getResult1() //returns "aa"
records.getResult2() //returns 1
所以,正確地返回第一行的值,但我怎麼能得到整個表?
(jooq 3.5.0)
不,我正在嘗試使用JOOQ renerated例程進行請求。現在生成的函數與我得到的函數完全相同,當函數只返回一個記錄時。我無法獲得此處描述的結果http://www.jooq.org/doc/3.5/manual/sql-building/table-expressions/table-valued-functions/ – 2015-02-08 14:23:35
@ user693442:您能否顯示您的jOOQ代碼'正在使用?你是否也可以展示函數體,只是爲了確保那裏沒有錯? – 2015-02-08 16:24:46
更新了問題 – 2015-02-08 17:48:37