存储过程:
create procedure p1()
begin
select * from UserTable;
end这个存储过程在MySql命令行中调用是没有问题的,但用vc调用的时候出错int ret = mysql_real_query(pMySql, "call p1()");ret返回值为1我有两个问题:
1. 通过mysql_real_query调用的存储过程中不能使用查询语句吗?
2. ret为1代表什么,如何可以查看错误信息多谢各位解惑
create procedure p1()
begin
select * from UserTable;
end这个存储过程在MySql命令行中调用是没有问题的,但用vc调用的时候出错int ret = mysql_real_query(pMySql, "call p1()");ret返回值为1我有两个问题:
1. 通过mysql_real_query调用的存储过程中不能使用查询语句吗?
2. ret为1代表什么,如何可以查看错误信息多谢各位解惑
应该是能的。
你这个ret得到的可能是影响行数或者是存储过程的执行结果,不是结果集。
但是mysql_real_query执行正常的返回结果应该是0,所以这句执行应该是不正常的。
create procedure Pro_GetUserInfo(in szEmpName varchar(1000))
-> begin
-> declare strSql varchar(1000);
-> set strSql = concat('insert into TmpTable_UserInfo(EmpName,PcName,IP) select EmpName,PcName,IP from T_SC_UserManager where EmpName in (', szEmpName, ')');
-> drop table if exists TmpTable_UserInfo;
-> create temporary table TmpTable_UserInfo(EmpName varchar(32) not null, PcName varchar(32) not null, IP varchar(32) not null);
-> set @sql1 = strSql;
-> prepare stmt_p from @sql1;
-> execute stmt_p;
-> end
上面这个存储过程用vc调用可以确定不会调用成功,因为调用之后,看临时表TmpTable_UserInfo根本没产生。但是只要把
set @sql1 = strSql;
-> prepare stmt_p from @sql1;
-> execute stmt_p;
去掉,在vc中调用就可以成功,当然,也失去意义了。。
int mysql_real_query(MYSQL *mysql, const char *stmt_str, unsigned long length)
不好意思,
int ret = mysql_real_query(pMySql, "call p1()");
发帖时的笔误程序里面写的是正确的