Skip to Main Content

Java Database Connectivity (JDBC)

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Inconsistent results from CallableStatement

843854Nov 8 2001 — edited Nov 10 2001
We are getting inconsistent results from a call to an Oracle database. We have a CallableStatement that returns 4 INTEGERs.
It runs perfectly if I run the Oracle procedure directly from the sql command line and then call it from the java code.
However if I recompile the Oracle stored procedures and execute the Callable Statement (without first running it from sql) then I am getting incorrect results...1,2,1,1 is being returned instead of 1,2,0,3. Are these results being cached somewhere???

We are using Oracle 8.1.7, JDK 1.3.1, and Oracle thin driver 8.1.7.

The code is as follows:

<pre>
private CallableStatement autoLBNumbersNeeded;

private void prepareStatements(){
..............
.............
autoLBNumbersNeeded=dbConnection.prepareCall("{CALL
pkg_scheduler.pr_auto_lb_nos(?,?,?,?)}");
autoLBNumbersNeeded.clearParameters();
autoLBNumbersNeeded.registerOutParameter(1, java.sql.Types.INTEGER);
autoLBNumbersNeeded.registerOutParameter(2, java.sql.Types.INTEGER);
autoLBNumbersNeeded.registerOutParameter(3, java.sql.Types.INTEGER);
autoLBNumbersNeeded.registerOutParameter(4, java.sql.Types.INTEGER);
...........
}

public UserNumber[] doAutoLoadBalancing () throws SQLException {
.............
.............
autoLBNumbersNeeded.clearParameters();
autoLBNumbersNeeded.execute();

mwFF = autoLBNumbersNeeded.getLong(1);
mwHF = autoLBNumbersNeeded.getLong(2);
wmFF = autoLBNumbersNeeded.getLong(3);
wmHF = autoLBNumbersNeeded.getLong(4);
autoLBNumbersNeeded.clearParameters();
...........
}
</pre>

The Oracle procedure is
<pre>
PROCEDURE proc1( p_parm_1 OUT NUMBER, p_parm_2 OUT NUMBER, p_parm_3
OUT NUMBER, p_parm_4 OUT NUMBER)
AS
BEGIN

-- Get Counts

SELECT COUNT(*)
INTO p_parm_1
FROM blah ......

SELECT COUNT(*)
INTO p_parm_2
FROM blah ......

SELECT COUNT(*)
INTO p_parm_3
FROM blah ......

SELECT COUNT(*)
INTO p_parm_4
FROM blah ......

EXCEPTION

blah .......

END proc1;
</pre>

Can anyone help?
Many thanks
Fionnuala
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Dec 8 2001
Added on Nov 8 2001
5 comments
163 views