mysql C++调用存储过程的问题

phoenix3 2010-05-12 12:39:26
我的存储过程,是有返回值,和结果集的。但是调用的时候,不能返回,返回值。结果集能得到。
或许,是我调用有问题。请教,MYSQL怎么同时获取结果集和返回值。
存储过程:
DELIMITER $$

DROP PROCEDURE IF EXISTS `test` $$
CREATE DEFINER=`db`@`%` PROCEDURE `test`(out ret int)
begin
select * from USERBASE_TBL;
set ret=2;
end $$

DELIMITER ;

C++代码:
.............
if(mysql_more_results(&m_Mysql))
{
{
printf("multe rs\n");/////////这里成功
}

MYSQL_RES *Query = mysql_store_result(&m_Mysql);
if (Query != NULL)
{
printf("rs is ok\n");/////////这里成功
}
if(mysql_next_result(&m_Mysql)==0)
{
MYSQL_RES *pRetQuery = mysql_store_result(&m_Mysql);
#if DEBUG
if(NULL == pRetQuery)//////////这里就是返回NULL了
{
printf("proc exec next rs error:%s\n",GetError().c_str());
}
#endif
}
执行结果:
multe rs
rs is ok
proc exec next rs error:
...全文
90 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
ACMAIN_CHM 2010-05-12
  • 打赏
  • 举报
回复
你的这个
CREATE DEFINER=`db`@`%` PROCEDURE `test`(out ret int)
begin
select * from USERBASE_TBL;
set ret=2;
end $$

只是红色的这一句返回一个结果集啊。所以你的mysql_next_result应该不会再有记录集了。
iihero_ 2010-05-12
  • 打赏
  • 举报
回复
out ret int,
你应该绑定一个变量到穿上ret上,这样执行查询以后,就可以得到这个值到绑定变量上了。
ACMAIN_CHM 2010-05-12
  • 打赏
  • 举报
回复
`test`(out ret int)

对于 out ret 是不是产生一个记录集的,你需要如下调用以取得这个值。
mysql_query("call test(@xxx)");
...
mysql_query("select @xxx");
...
phoenix3 2010-05-12
  • 打赏
  • 举报
回复
out ret int,注意看这里。
程序执行,mysql_next_result是有记录集。

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧