我的存储过程,是有返回值,和结果集的。但是调用的时候,不能返回,返回值。结果集能得到。
或许,是我调用有问题。请教,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:
或许,是我调用有问题。请教,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:
CREATE DEFINER=`db`@`%` PROCEDURE `test`(out ret int)
begin
select * from USERBASE_TBL;
set ret=2;
end $$只是红色的这一句返回一个结果集啊。所以你的mysql_next_result应该不会再有记录集了。
程序执行,mysql_next_result是有记录集。
mysql_query("call test(@xxx)");
...
mysql_query("select @xxx");
...
你应该绑定一个变量到穿上ret上,这样执行查询以后,就可以得到这个值到绑定变量上了。