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???
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???