Thread: Re: Multiple Statement result set problem with PreparedStatements

Re: Multiple Statement result set problem with PreparedStatements

From
Oliver Jowett
Date:
Lenard, Rohan (Rohan) wrote:
> What I'm trying to do is do 2 inserts and get the resultant key values
> from the 2 inserts - i.e. effectively the row indexes (there are
> separate sequences for the pkey for each table, so the currval() gives
> the key of the insert for that table.
>
> This SQL works fine from any command line interface to the DB - giving
> the expected results.
>

> However through the JDBC driver, I don't get any results with a select
> involving the 2 seqs, but if I choose just one I do !!.

That is weird.

I will try to find time to put together a selfcontained testcase later
on (you could speed this up by sending me one :)

> BTW - The followup analysis below is flawed.
>
> With this SQL the driver always returns false for the execute() thus
> taking the getMoreResults() path & there are never results for the
> INSERT (at least not easily obtainable via the API in a generic way).

Sorry -- not thinking there :)

What I'd expect to see is this sequence:

  execute() returns false (no resultset for this result)
  getUpdateCount() returns 1 (1 row inserted)
  getMoreResults() returns false (no resultset for this result)
  getUpdateCount() returns 1 (1 row inserted)
  getMoreResults() returns true (resultset present)
  getResultSet() returns an appropriate resultset for the SELECT
  getMoreResults() returns false (no resultset for this result)
  getUpdateCount() returns -1 (no more results)

Your code seems to be expecting something different..

-O