饭中淹的避难所~~~~~

偶尔来避难的地方~

  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  94 随笔 :: 0 文章 :: 257 评论 :: 0 Trackbacks
昨天碰到了一个存储过程出错,但是mysqlapi的QUERY并不返回错误的问题。
后来才知道,调用存储过程,会返回一个调用情况的结果集,也就是最后一个结果集。如果前面有别的结果集,query会返回成功,当next_result返回>0的值时,就表示调用情况结果集出现错误,这时用errno和error就可以获取到这个错误了。
折腾了半天,连mysql命令行工具的代码我都拉下来看了,结合API文档,才搞明白这事情。


mysql.cc里的代码是这几句

    mysql_free_result(result);
  } 
while (!(err= mysql_next_result(&mysql)));
  
if (err >= 1)
    error
= put_error(&mysql);

检查最后一次next_result的值是否>0,是的话就输出错误。

我猜想,mysql是想尽可能多的返回结果,就算下面的存储过程出错,也要返回出错前已经select到的结果集。
posted on 2011-08-25 09:05 饭中淹 阅读(1151) 评论(0)  编辑 收藏 引用 所属分类: 游戏服务器

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理