mysql callable statement problem

L

lightning

my Mysql is 5.0.18

In database "test" I created a procedure:

mysql> delimiter //
mysql> create procedure demoSp(IN inputParam VARCHAR(255),INOUT
inOutParam INT)
-> begin
-> declare z INT;
-> set z=inOutParam + 1;
-> set inOutParam = z;
-> select inputParam;
-> select CONCAT('dfjd',inputParam);
-> end//

just add 1 to the IN/OUT param and select some stuff.
In fact this code is from the Mysql connector/J 's doc

In java code I wrote:

CallableStatement cStmt = con.prepareCall("{call demoSp(?,?)}");
cStmt.registerOutParameter(2, Types.INTEGER);
cStmt.setString("inputParam", "abc");
cStmt.setInt("inOutParam",2);

boolean had = cStmt.execute();
while (had) {
ResultSet rs = cStmt.getResultSet();
while (rs.next())
System.out.println(rs.getString(1));
had=cStmt.getMoreResults();
}
System.out.println(cStmt.getInt("inOutParam"));
con.close();

-----------------------------------
but the result is an error says "Out of range value adjusted for
column 'inOutParam' at row 1"
so I go on the net and search something says that I can solve this by
edit the my.ini, just remove the "STRICT_TRANS_TABLES" from the sql-
mode option and restart the db server.

I did this ,and the result give me:


abc
dfjdabc
1


no matter how I change the value of the "inOutParam", it just return
"1".

By accident , I just replace the line "

cStmt.setInt("inOutParam",2);

to

cStmt.setInt(1,2);

the result changes to be this:

2
dfjd2
3


My default charset is set to UTF-8

my connector/J version is 3.1.0
my jdk version 1.5.0

Is this a bug or did I miss something???
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,995
Messages
2,570,236
Members
46,822
Latest member
israfaceZa

Latest Threads

Top