Hi.
I'm trying to follow these advices:
http://www.jooq.org/doc/3.5/manual-single-page/#stored-procedures.
Here is a function I created in a PostgreSQL:
CREATE OR REPLACE FUNCTION public.get_test_out(id_p integer, OUT result test)
RETURNS test
LANGUAGE plpgsql
AS $function$
BEGIN
SELECT * FROM test into result WHERE id = id_p;
END
$function$
JOOQ generates the routine class, so, following the doc, I wrote:
DSLContext create = DSL.using(conn, SQLDialect.POSTGRES);
GetTestOut gto = new GetTestOut();
gto.setIdP(1);
gto.execute(create.configuration());
System.out.println(gto.getResult());
This codes raises an exception:
org.jooq.exception.DataAccessException: SQL [{ call "public"."get_test_out"(?, ?) }]; A CallableStatement was executed with an invalid number of parameters
at org.jooq.impl.Utils.translate(Utils.java:1553)
at org.jooq.impl.DefaultExecuteContext.sqlException(DefaultExecuteContext.java:571)
at org.jooq.impl.AbstractRoutine.executeCallableStatement(AbstractRoutine.java:368)
at org.jooq.impl.AbstractRoutine.execute(AbstractRoutine.java:270)
at org.jooq.impl.AbstractRoutine.execute(AbstractRoutine.java:256)
at test.Test.main(Test.java:40)
Caused by: org.postgresql.util.PSQLException: A CallableStatement was executed with an invalid number of parameters
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:437)
at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:410)
at org.jooq.tools.jdbc.DefaultPreparedStatement.execute(DefaultPreparedStatement.java:194)
at org.jooq.impl.AbstractRoutine.execute0(AbstractRoutine.java:381)
at org.jooq.impl.AbstractRoutine.executeCallableStatement(AbstractRoutine.java:342)
... 3 moreThis seems so say that the generated statement is expecting two parameters (there are two ? placeholders).
Did I do something wrong?
Adrien.