MySQL Error: PROCEDURE xmdk.query_all_plan can't return a result set in the given context

本文介绍了一种解决C++调用MySQL存储过程时出现的错误方法。通过修改数据库连接参数CLIENT_MULTI_STATEMENTS,实现了能够在一个连接中执行多条语句及存储过程的功能。

  C++调用存储过程失败!出现如下错误:MySQL Error: PROCEDURE xmdk.query_all_plan can't return a result set in the given context

  其中:

  xmdk是数据库名称,
  query_all_plan是自己写的存储过程的名字;

  

  

  错误原因:连接数据库的方式可能不正确

  导致报错的数据库连接方式:

 

 C++ Code 
1
2
3
4
5
6
7
8
9
10
11
 
if (mysql_real_connect(m_mysql, server_ip.c_str(),
                       user_name.c_str(),
                       user_password.c_str(),
                       mysql_dbname.c_str(),
                       
0,
                       
NULL,
                       
0) == NULL)
{
    DEBUG_TRACE_ERROR(WSTR(
"ServerConnect_2,EER:MySQL(%s)连接失败.,%s:%d"), connectstr.c_str(), __WFUNCTION____LINE__);
    
return -1;
}

  修改为正确的连接方式:

 

 C++ Code 
1
2
3
4
5
6
7
8
9
10
11
 
if (mysql_real_connect(m_mysql, server_ip.c_str(),
                       user_name.c_str(),
                       user_password.c_str(),
                       mysql_dbname.c_str(),
                       
0,
                       
NULL,
                       CLIENT_MULTI_STATEMENTS) == 
NULL)
{
    DEBUG_TRACE_ERROR(WSTR(
"ServerConnect_2,EER:MySQL(%s)连接失败.,%s:%d"), connectstr.c_str(), __WFUNCTION____LINE__);
    
return -1;
}

  果然,通过修改一下连接数据库的连接参数(CLIENT_MULTI_STATEMENTS)就OK了!

 

  有了CLIENT_MULTI_STATEMENTS,一次就可以执行多条语句,执行一个存储过程(好多条语句)大致如此。

转载于:https://www.cnblogs.com/MakeView660/p/7000761.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值