我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
GOALTER procedure [dbo].[P_User_Login]
@UserName nvarchar(20),
@UPwd varchar(20),
@return_msg varchar(50) output
as
begindeclare @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

解决方案 »

  1.   

    使用hibernate一般很少用存储过程的了
      

  2.   

    call.setString(1, "admin");
    call.setString(2, "123456");
    call.registerOutParameter("return_msg", java.sql.Types.VARCHAR);
    call.executeQuery();
    String result = call.getString("return_msg");
      

  3.   

    晕,刚看明白,你再加一个参数用来获取返回结果就好了啊
    java里写成
    call.setString(3,"");然后存储过程多加一个参数,然后对第3个参数再赋值一下就可以了啊
      

  4.   

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

  5.   

    1、  你说的该如何加参数啊 参数该以什么类型的声明 最好在代码上说明一下-------  
    2、 ResultSet  rs= call.executeQuery();
     System.out.println(call.getString("return_msg"));
     while(rs.next())
      rs.getString("account");
    控制台-----------
    ···登陆成功
    ···com.microsoft.sqlserver.jdbc.SQLServerException: 结果集已关闭。这里不知道是什么原因