Re: CallableStatement.getParameterMetaData() throws exception for valid {call ...} statement

Поиск
Список
Период
Сортировка
От Thomas Kellerer
Тема Re: CallableStatement.getParameterMetaData() throws exception for valid {call ...} statement
Дата
Msg-id mkillq$bni$1@ger.gmane.org
обсуждение исходный текст
Ответ на Re: CallableStatement.getParameterMetaData() throws exception for valid {call ...} statement  (dmp <danap@ttc-cmc.net>)
Ответы Re: Re: CallableStatement.getParameterMetaData() throws exception for valid {call ...} statement  (dmp <danap@ttc-cmc.net>)
Список pgsql-jdbc
dmp wrote on 30.05.2015 21:50:
> Seems to work fine, maybe I have it wrong?
>

interesting, your code indeed works.

After playing around with it, the difference is that I call getParameterMetaData() *before* calling
registerOutParameter().

This works:

       cstmt = connection.prepareCall("{call sum_n_product(?,?,?,?)}");

       cstmt.registerOutParameter(3, Types.INTEGER);
       cstmt.registerOutParameter(4, Types.INTEGER);
       cstmt.setInt(1, 2);
       cstmt.setInt(2, 5);

       cstmt.execute();

       meta = cstmt.getParameterMetaData();

This also works:

       cstmt = connection.prepareCall("{call sum_n_product(?,?,?,?)}");

       cstmt.registerOutParameter(3, Types.INTEGER);
       cstmt.registerOutParameter(4, Types.INTEGER);

       meta = cstmt.getParameterMetaData();

       cstmt.setInt(1, 2);
       cstmt.setInt(2, 5);

       cstmt.execute();


This does NOT work:

       cstmt = connection.prepareCall("{call sum_n_product(?,?,?,?)}");

       meta = cstmt.getParameterMetaData(); -- right after preparing the statement!

       cstmt.registerOutParameter(3, Types.INTEGER);
       cstmt.registerOutParameter(4, Types.INTEGER);
       cstmt.setInt(1, 2);
       cstmt.setInt(2, 5);

       cstmt.execute();

So getParameterMetaData() seems to only work after all OUT parameters have been registered (I also tried calling it
afterthe first registerOutParameter() - failed as well). 

So how can I retrieve the information about the parameters if I can't call getParameterMetaData() before registering
theparameters (which I try to detect by calling that method). The JDBC JavaDocs do not mention such a restriction. 


Thomas



В списке pgsql-jdbc по дате отправления:

Предыдущее
От: Alexis Meneses
Дата:
Сообщение: Re: BUG on postgresql-9.4-1201-jdbc41 ...
Следующее
От: dmp
Дата:
Сообщение: Re: Re: CallableStatement.getParameterMetaData() throws exception for valid {call ...} statement