Имам функция Postgresql, която връща таблица
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-admin връща правилен резултат
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);
}
...
и в клас Рутини
...
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)
testFunc(Configuration, String, Integer)
метод (вижте моя отговор). Може да има фин бъг. Имате ли нещо против да предадете това на JOOQ User Group? Ще бъде по-лесно да обсъдим по-нататъшни стъпки, за да видим какво може да е причинило грешката (може би версията на PostgreSQL?) - person Lukas Eder   schedule 09.02.2015