日期:2014-05-19  浏览次数:20737 次

hibernate+存储过程+sql server 2005
我hibernate入门不久 想用hibernate调用一个登录的存储过程P_User_Login
我的存储过程是有两个参数和一个String类型的返回值 我想做的是接收到一个return信息个一个结果集
 CallableStatement call=conn.prepareCall("{Call P_User_Login(?,?,?)}");  
call.setString(1, "admin");
call.setString(2, "123456");
call.registerOutParameter("return_msg", java.sql.Types.VARCHAR);
call.executeQuery();
System.out.println(call.getString("return_msg"));--------return_msg==“登录成功”
现在我能够得到返回的信息 请问我该怎么接受返回的结果集呢?

附上存储过程-------------------------------
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO

ALTER procedure [dbo].[P_User_Login]
@UserName nvarchar(20),
@UPwd varchar(20),
@return_msg varchar(50) output
as
begin

declare @UGroup varchar(32);
set @UGroup=(select groupid from p_group where name='终端用户');
declare @TagGroup varchar(32);
set @TagGroup=(select groupid from p_user_ext where account=@UserName);
if(@UGroup<>@TagGroup)
begin
declare @TmpStatus as int;
set @TmpStatus=(select status from p_user_ext where account=@UserName);
if @TmpStatus=1
begin
SET NOCOUNT ON;
declare @userCount as int;
set @userCount =(select count(*) from p_user_ext where account=@UserName and passwd=@UPwd and status='1'); 
if @userCount>0 
begin
select * from p_user_ext where account=@UserName and passwd=@UPwd and status='1';
set @return_msg='登陆成功';
return 1;
end
else
begin
set @return_msg='用户名或密码错误';
return 0;
end
end
else
begin
set @return_msg='账号被停用';
return 0;
end
end
else
begin
set @return_msg='用户无权限';
return 0;
end
end


------解决方案--------------------
使用hibernate一般很少用存储过程的了。。。
------解决方案--------------------
call.setString(1, "admin");
call.setString(2, "123456");
call.registerOutParameter("return_msg", java.sql.Types.VARCHAR);
call.executeQuery();
String result = call.getString("return_msg");
------解决方案--------------------
晕,刚看明白,你再加一个参数用来获取返回结果就好了啊
java里写成
call.setString(3,"");

然后存储过程多加一个参数,然后对第3个参数再赋值一下就可以了啊

------解决方案--------------------
上边说的再加个参,那return_msg就是地4个参数了
或者
ResultSet set = call.executeQuery();
然后就像取查询结果一样从set里边取就可以了