当前位置: 技术问答>java相关
CallableStatement为什么不能取出存储过程的返回值呢
来源: 互联网 发布时间:2015-08-13
本文导语: CallableStatement cstmt = con.prepareCall("{call SearchLog(?, ?, ?, ?, ?, ?)}"); cstmt.registerOutParameter(1, java.sql.Types.VARCHAR); ........... 设置其他差数的传入值 Rs = cstmt.executeQuery(); out.println(cstmt.getString(1)); 这里取出的数据总是为...
CallableStatement cstmt = con.prepareCall("{call SearchLog(?, ?, ?, ?, ?, ?)}");
cstmt.registerOutParameter(1, java.sql.Types.VARCHAR);
...........
设置其他差数的传入值
Rs = cstmt.executeQuery();
out.println(cstmt.getString(1));
这里取出的数据总是为Null,什么破东西噢
cstmt.registerOutParameter(1, java.sql.Types.VARCHAR);
...........
设置其他差数的传入值
Rs = cstmt.executeQuery();
out.println(cstmt.getString(1));
这里取出的数据总是为Null,什么破东西噢
|
给你一个例子..........
//准备可调用语句对象
CallableStatement cstmt=conn.prepareCall("{?=call test222(?,?,?)}");
//设置输入参数
// cstmt.setString(2,"seven");
//登记输出参数
cstmt.registerOutParameter(1,java.sql.Types.INTEGER);
cstmt.registerOutParameter(2,java.sql.Types.CHAR);
cstmt.registerOutParameter(3,java.sql.Types.VARCHAR);
cstmt.registerOutParameter(4,java.sql.Types.INTEGER);
//输出参数
int intReturn=-99;
String lib_code="lib_code";
String lib_name="lib_name";
int flag=-99;
//执行该存储过程并返回结果集
rs=cstmt.executeQuery();
String rs_libcode;
String rs_libname;
int rs_flag;
while (rs.next())
{
//获取来自结果集中的数据
rs_libcode = rs.getString(1);
rs_libname = rs.getString(2);
rs_flag = rs.getInt(3);
out.println("rs_libcode="+rs_libcode+"
");
out.println("rs_libname="+rs_libname+"
");
out.println("rs_flag="+rs_flag+"
");
out.println("=====================================================
");
}
//获取返回值
intReturn = cstmt.getInt(1);
//获取输出参数的值
lib_code= cstmt.getString(2);
lib_name= cstmt.getString(3);
flag= cstmt.getInt(4);
//输出
out.println("intReturn="+intReturn+"
");
out.println("lib_code="+lib_code+"
");
out.println("lib_name="+lib_name+"
");
out.println("flag="+flag+"
");
注意:如果你的存储过程中不返还结果集,你需要用cstmt.executeUpdate()或cstmt.execute(),而不是cstmt.executeQuery();
//准备可调用语句对象
CallableStatement cstmt=conn.prepareCall("{?=call test222(?,?,?)}");
//设置输入参数
// cstmt.setString(2,"seven");
//登记输出参数
cstmt.registerOutParameter(1,java.sql.Types.INTEGER);
cstmt.registerOutParameter(2,java.sql.Types.CHAR);
cstmt.registerOutParameter(3,java.sql.Types.VARCHAR);
cstmt.registerOutParameter(4,java.sql.Types.INTEGER);
//输出参数
int intReturn=-99;
String lib_code="lib_code";
String lib_name="lib_name";
int flag=-99;
//执行该存储过程并返回结果集
rs=cstmt.executeQuery();
String rs_libcode;
String rs_libname;
int rs_flag;
while (rs.next())
{
//获取来自结果集中的数据
rs_libcode = rs.getString(1);
rs_libname = rs.getString(2);
rs_flag = rs.getInt(3);
out.println("rs_libcode="+rs_libcode+"
");
out.println("rs_libname="+rs_libname+"
");
out.println("rs_flag="+rs_flag+"
");
out.println("=====================================================
");
}
//获取返回值
intReturn = cstmt.getInt(1);
//获取输出参数的值
lib_code= cstmt.getString(2);
lib_name= cstmt.getString(3);
flag= cstmt.getInt(4);
//输出
out.println("intReturn="+intReturn+"
");
out.println("lib_code="+lib_code+"
");
out.println("lib_name="+lib_name+"
");
out.println("flag="+flag+"
");
注意:如果你的存储过程中不返还结果集,你需要用cstmt.executeUpdate()或cstmt.execute(),而不是cstmt.executeQuery();
|
经过测试,我发现可能是ODBC的问题
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。