首页 > 数据库技术 > 详细

mysql存储过程实例

时间:2014-01-26 16:33:49      阅读:487      评论:0      收藏:0      [点我收藏+]

由于mysql自定义函数中不能输出两或多个结果,所以需要用到mysql的存储过程。

下面是一个例子。

sql语句:

DROP PROCEDURE IF EXISTS `testguocheng`;

CREATE  PROCEDURE `testguocheng`(IN `sql1` varchar(100),IN `sql2` varchar(100))
BEGIN
SET @SQLStr1=CONCAT(sql1 );
PREPARE stmt1 from @SQLStr1 ;
EXECUTE stmt1;
 
SET @SQLStr2=CONCAT(sql2);
PREPARE stmt2 from @SQLStr2 ;
EXECUTE stmt2;
END;
解释一下这个存储过程,输入的是两个sql语句,得到的结果是两个结果集。

下面是调用的java语句。

public static void getData() {
  Connection conn = JdbcUtils.getConnection();
   CallableStatement stmt = null;
   ResultSet rs=null;
  
         try{
          stmt = conn.prepareCall("{call testguocheng(‘select * from tsys_user;‘,‘select count(*) from tsys_user;‘)}");
          boolean flag=stmt.execute();
          int i=0;
          
          while(flag){
           System.out.println("第几个结果集"+(++i));
               
              rs = stmt.getResultSet();
               if(i==1){
               while(rs.next()){
               System.out.println("uid:" +rs.getString("uid")+",uname:"+rs.getString("uname"));   
               }
               }else{
                while(rs.next()){
                System.out.println("总数:" +rs.getString(1));   
                }
               }
               flag=stmt.getMoreResults();
          }
         }catch(Exception e){
             System.out.println(e.toString());
         }finally{
             try {
                 stmt.close();
                 conn.close();
             }catch (Exception ex) {
                 System.out.println(ex.getMessage());
             }
         }

 }

 

 

mysql存储过程实例

原文:http://blog.csdn.net/yuexin2/article/details/18792449

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!