我用文件保存了下例信息
[proc]
delimiter //
create procedure proc11 (out param1 int) 
begin  
select count(*) into param1 from svpnrc;
end // 
然后用GetPrivateProfileSection获取文件的信息,再调用mysql_real_query执行sql语句返回为1,执行sql语句错误,请问要怎么样才能通过c++创建存储过程
char tempchar[200] ={0};
GetPrivateProfileSection("Count",tempchar,sizeof(tempchar),"c:\\sa.conf");
int result = mysql_real_query(m_DbHandle,tempchar,strlen(tempchar));

解决方案 »

  1.   

    这个应该是你的sql语句有问题,你调试一下看是不是sql语句有错。
      

  2.   

    我再mysql命令下是正确的,用文件执行也是正确的
      

  3.   

    创建存储过程方法如下,将你的创建存储过程的那一堆SQL保存成char数组,ExecuteSQL执行就等于创建存储过程了。
    调用
    rs.Open( CRecordset::forwardOnly, "{call queryall}");
    queryall是存储过程名。
      

  4.   

    调用也可以这样
    mysql_real_query( "call   p_test() ");//正确 
    MYSQL_RES*   res;
    res   =   mysql_store_result(mysql);
      

  5.   

    [proc]
    delimiter //
    create procedure proc11 (out param1 int)
    begin 
    select count(*) into param1 from svpnrc
    end //
    把分号去掉试一下,好久没有用mysql了,不记得了
      

  6.   

    [proc]
    create procedure proc11 (out param1 int)
    begin 
    select count(*) into param1 from svpnrc;
    把delimiter 去了试下。delimiter 是mysql 命令工具中的命令,不是MySQL的语法。