hibernate里怎么调用存储过程

存储过程
  CREATE PROCEDURE [dbo].[Rtest] 
@bdate datetime,          //参数
@edate datetime,
@district varchar(6) 
as   
begin 
select s.name,count(i.id) as number  from scenic s,info i where s.id=i.entid and i.usertypeid =303 and i.classid=1 
and (i.pdate between @bdate and  @edate) and s.districtid =@district group by s.name 
end
 
hibernate程序

Session session = HibernateSessionFactory.getSession();

 Connection con=session.connection();   //一定要有
 String procedure = "{call Rtest(?,?,?)}"; 
 CallableStatement cstmt = null;
  ResultSet rs = null;
 try {
 
     cstmt = con.prepareCall(procedure);  //调用存储过程

     //hibernate中一般问号都是从0开始的,但是sql里是从1开始的

     cstmt.setString(1,"2007-9-1");
     cstmt.setString(2,"2007-9-17");  //存储过程里的参数是datetime类型,sql可以自动把String类型转换但是必须是数据库中要的格式 2007/9/7,2007-9-1 都可以

     cstmt.setString(3,"230102");
    rs = cstmt.executeQuery();   //执行
     
    while(rs.next()){
        System.out.println(rs.getInt(2));  //读取
    }
 }finally {
     session.close();             //关闭session
 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值