返回多数据集写法:
第一种

  1. DROP PROCEDURE IF EXISTS `p_query_user` ;
  2. DELIMITER //
  3. CREATE PROCEDURE p_query_user( p_inout_user_id INT )
  4. begin
  5. declare c varchar(100) default '';
  6. SELECT * FROM T_SD_USER WHERE USER_ID = p_inout_user_id ;
  7. SET p_inout_user_id =2222;
  8. end //
  9. DELIMITER ;
  10. set @uId = 3000 ;
  11. CALL p_query_user(@uId );
  12. SELECT @uId ;

第二种

  1. mysql>delimiter //
  2. mysql>drop procedure if exists proc;
  3. mysql>create procedure proc()
  4. begin
  5. create temporary table tmp1 like t;
  6. insert into tmp1 select * from t;
  7. create temporary table tmp2 like t;
  8. insert into tmp2 select * from t;
  9. end;
  10. //
  11. mysql>delimiter ;
  12. mysql>select * from tmp1;
  13. mysql>select * from tmp2;

注:使用临时表在session级一直可用,再次调用存储过程需要先DROP临时表。

hibernate call

  1. @Test
  2. public void test0() {
  3. try {
  4.  
  5. String procedureSql = "CALL p_query_user( :userId)";
  6. SQLQuery sqlQuery = t.getSession().createSQLQuery(procedureSql)
  7. .addEntity(TSdUser.class);
  8. Object userId = 3000;
  9. sqlQuery.setParameter("userId", userId);
  10. List<TSdUser> result = sqlQuery.list();
  11. for (TSdUser tSdUser : result) {
  12. System.out.println(tSdUser);
  13. }
  14. System.out.println(userId);
  15. } catch (Exception e) {
  16. e.printStackTrace();
  17. }
  18. }

结果如下:

  1. Hibernate: CALL p_query_user( ?)
    TSdUser [userSysMlb=100.0, userUseredMlb=633137.0, userDoDiscoverCount=0, userDoCommonsSayCount=0, createTime=2014-05-08 12:20:35.0, lastActivateSystemMsgTime=2014-07-17 12:10:00.0, lastActivateSusCommentMsgTime=2014-05-08 12:20:35.0, lastActivateNegativeMsgTime=2014-06-17 10:27:37.0, lastActivatePraiseMsgTime=2014-05-08 12:20:35.0, lastActiveTime=2014-08-11 18:45:52.0, priMsgTime=2014-08-09 14:30:27.0, lockTime=null, userMark=null, userSubMark=null, userRemark=null, userInfo=null, userLoginIp=127.0.0.1, userLogginPhoneCode=13724770797, userRegisterInfo=null, userRealName=null, userRegisterPhoneCode=13724770797, userRegistrationCity=null, userPhoneCity=湛江, userDeviceType=Android, userLoginQqId=1, userLoginWeiXinId=null, userLoginSinaBlogId=null, userWeiXinOpenId=111, cteateType=1, restaurantWeiXinOpenId=222, weiXinSubscribeTime=2014-05-17 13:29:28.0, weiXinSubscribeStatus=SUBSCRIBE, weiXinUnSubscribeTime=null, userId=3000, userName=MJorcen, userTotalMlb=1.1111111E7, userDoAttentionCount=0, userReAttentionCount=0, userDoPraiseCount=0, userRePraiseCount=11, userDoNegativeCount=0, userReNegativeCount=6, userDoShowDetailCount=38, userDoGetVoucherCount=5, userDoUsedVoucherCount=2, userPhone=13724770797, userGender=G, userGrade=0, userHeader=null]

或者:

  1. @Test
  2. public void test1() {
  3. try {
  4.  
  5. String procedureSql = "CALL p_query_user(?)";
  6. Connection connection = t.getSession().connection();
  7. Object userId = 3000;
  8. java.sql.CallableStatement cs = connection
  9. .prepareCall(procedureSql);
  10. cs.setInt(1, 3000);
  11.  
  12. cs.registerOutParameter("p_inout_user_id", Types.INTEGER);
  13. cs.execute();
  14. int patams1 = cs.getInt(1);
  15. ResultSet resultSet = cs.getResultSet();
  16. while (resultSet.next()) {
  17. System.out.println(resultSet.getInt("USER_ID"));
  18. }
  19. System.out.println(patams1);
  20. } catch (Exception e) {
  21. e.printStackTrace();
  22. }
  23. }

一个网上的例子;

  1. public String callFirstProcedures(final long qyid, final int pdys) {
  2. String procedureSql = "{call get_qyaqdcpdjb(?,?,?)}";
  3. Object pj = jdbcTemplate.execute(procedureSql,
  4. new CallableStatementCallback() {
  5. public Object doInCallableStatement(CallableStatement cs)
  6. throws SQLException, DataAccessException {
  7. cs.setLong(1, qyid);
  8. cs.setInt(2, pdys);
  9. //你需要注册一个输出参数
  10. cs.registerOutParameter(3, Types.VARCHAR);
  11. cs.execute();
  12. return cs.getString(3);
  13. }
  14. });
  15. return HtmsUtils.formatObject(pj);
  16. }

mysql procedure返回多数据集的更多相关文章

  1. jdbc 处理mysql procedure返回的多个结果集

    1:测试数据库表user mysql> desc user$$ +-------+-------------+------+-----+---------+----------------+ | ...

  2. MySQL 存储过程返回多个值

    MySQL  存储过程返回多个值   在本教程中,您将学习如何编写/开发返回多个值的存储过程. MySQL存储函数只返回一个值.要开发返回多个值的存储过程,需要使用带有INOUT或OUT参数的存储过程 ...

  3. OpenLayers添加点【php请求MySQL数据库返回GeoJSON数据】

    php请求MySQL数据库返回GeoJSON数据的实现方法请参见: http://www.cnblogs.com/marost/p/6234514.html OpenLayers[v3.19.1-di ...

  4. MYSQL procedure

    没怎么接触过mysql procedure,今天建个calendar表还磨磨唧唧的,记录一下: CREATE PROCEDURE `new_procedure` (start_date DATA,en ...

  5. mysql更新返回值问题(更新内容跟之前内容一样,返回0)

    mysql更新返回值问题 问: 有一界面要更新个人信息,有几十个text标签需要填写假设有一用户从用户列表点修改进入了修改页面,但又没有修改什么,马上点击保存这时,因为text标签非常多,不能够一一判 ...

  6. PHP 把返回的数据集转换成Tree树

    /** * 把返回的数据集转换成Tree * @access public * @param array $list 要转换的数据集 * @param string $pid parent标记字段 * ...

  7. Python查询Mysql时返回字典结构的代码

    Python查询Mysql时返回字典结构的代码 MySQLdb默认查询结果都是返回tuple,输出时候不是很方便,必须按照0,1这样读取,无意中在网上找到简单的修改方法,就是传递一个cursors.D ...

  8. Spring Boot项目中MyBatis连接DB2和MySQL数据库返回结果中一些字符消失——debug笔记

    写这篇记录的原因是因为我之前在Spring Boot项目中通过MyBatis连接DB2返回的结果中存在一些字段, 这些字段的元素中缺少了一些符号,所以我现在通过在自己的电脑上通过MyBatis连接DB ...

  9. python 调用mysql存储过程返回结果集

    存储过程: delimiter | ),)) begin select * from tb_test where mid = imid and user = iuser; end; | delimit ...

随机推荐

  1. Objective-C /iphone开发基础:协议(protocol)

    protocol协议时为了补充Objective-C 只能单继承的缺陷而增加的一个新功能.Objective-C重所有的方法都是虚方法,所以在oc重也就没有关键字 virtual一说,有了协议可以补充 ...

  2. 【转载】Hadoop和大数据:60款顶级大数据开源工具

    一.Hadoop相关工具 1. Hadoop Apache的Hadoop项目已几乎与大数据划上了等号.它不断壮大起来,已成为一个完整的生态系统,众多开源工具面向高度扩展的分布式计算. 支持的操作系统: ...

  3. adb uninstall卸载apk 命令后跟的是包的名称

    昨天在使用adb卸载程序,结果死活卸载不了.我输入的命令和系统提示如下: arthur@arthur-laptop:~$ adb uninstall com.hase.bclm.client-2.ap ...

  4. Ext.Net学习笔记18:Ext.Net 可编辑的GridPanel

    Ext.Net学习笔记18:Ext.Net 可编辑的GridPanel Ext.Net GridPanel 有两种编辑模式:编辑单元格和编辑行. 单元格编辑: 行编辑: 可以看出,单元格编辑的时候,只 ...

  5. ios 获取字符串所需要占用的label的高度

    //    设置字体大小 UIFont *fnt=[UIFont systemFontOfSize:16]; NSDictionary *attribute = @{NSFontAttributeNa ...

  6. C#与C++相比较之STL篇

    引言 Program into Your Language, Not in It--<代码大全>.如何深入一门语言去编程?我认为有三步:熟悉它:知道它的局限性:扩展它.如何熟悉?不必说,自 ...

  7. OpenJudge/Poj 1661 帮助 Jimmy

    1.链接地址: bailian.openjudge.cn/practice/1661 http://poj.org/problem?id=1661 2.题目: 总Time Limit: 1000ms ...

  8. OpenJudge / Poj 1044 Date bugs C++

    链接地址: Poj:http://poj.org/problem?id=1044 OpenJudge:http://bailian.openjudge.cn/practice/1044/ 题目: 总时 ...

  9. JQuery(三) Ajax相关

    JQuery大大简化了Ajax通用操作,开发者只需要指定请求URL,回调函数即可. 三个主要方法: $().param(obj):将obj参数(对象或数组)转化成查询字符串. {name:" ...

  10. Delphi IDE下载全地址

    Delphi IDE下载全地址: http://pan.baidu.com/share/home?uk=1060104307#category/type=0 还是网友伟大呀.当然有钱的公司还是应该多多 ...