存储过程中间就一条select语句,java中执行语句如下:
CallableStatement call = dbTran.getConn().prepareCall(("{?=call pro_test (?,?) }"));
call.registerOutParameter(1, Types.INTEGER);
call.setInt(2, 1);
call.setInt(3, 2);
call.execute();
rs = call.getResultSet();
if(rs.next()){
.....
}在rs.next()时出现错误,提示:Caused by: java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Object has been closed.这是什么原因?如果存储过程中有插入在语句,用call.getResultSet()返回null值,这是为什么?
CallableStatement call = dbTran.getConn().prepareCall(("{?=call pro_test (?,?) }"));
call.registerOutParameter(1, Types.INTEGER);
call.setInt(2, 1);
call.setInt(3, 2);
call.execute();
rs = call.getResultSet();
if(rs.next()){
.....
}在rs.next()时出现错误,提示:Caused by: java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Object has been closed.这是什么原因?如果存储过程中有插入在语句,用call.getResultSet()返回null值,这是为什么?
CREATE proc pro_test(@p1 int ,@p2 int)
as
begin
declare @ret int select a.e_id,a.p_id,b.e_name,sum(a.p_d_money)
from t_pay_detail a,(select e_id,e_name
from T_s_employee) b
where a.e_id=b.e_id
group by a.e_id,a.p_id,b.e_name set @ret=1
return @ret
end 直接执行存储过程没有问题,有记录
as
begin
declare @ret int --也没用到 select a.e_id,a.p_id,b.e_name,sum(a.p_d_money)
from t_pay_detail a,(select e_id,e_name
from T_s_employee) b
where a.e_id=b.e_id
group by a.e_id,a.p_id,b.e_name set @ret=1 --没有用
return @ret --没有用
end 把带参数的都去掉都可以.存储过程本身没问题.
那楼主就要检查一下java代码了
那楼主就要检查一下java代码了
-->
CallableStatement call = dbTran.getConn().prepareCall(("{exec ?=pro_test (?,?) }"));