C++调用含输出参数的存储过程 详情参照 CSDN博客 : http://blog.csdn.net/ytz_linuxer/article/details/4435056 ,内容挺详细的,好好看看吧 ! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 请参考我的这篇短文:http://blog.csdn.net/iihero/article/details/8362269里边有存储过程相关调用及取结果的过程。 mysql_query(&mysql, "SELECT @s ");这个参数s该如何获取呢??? mysql_query(&mysql, "SELECT @s ");这个参数s该如何获取呢???这个是输出参数 ,直接在存储过程中 set 就可以了 。 //取得存储过程返回值 res = mysql_store_result(&mysql);你到网查查看 create table student(id varchar(32) not null,name varchar(20) not null,age tinyint unsigned not null,home varchar(50) not null,birthday datetime not null,primary key(id))存储过程:create procedure p_querystudent(inname varchar(32),OUT OutTotalCount int unsigned) /*输出参数*/begindeclare v_sqlselect varchar(4096);declare v_sqlcount varchar(4096);declare v_studentname varchar(512);set v_sqlselect = 'select id,name,age,home,birthday from student where 1 = 1';set v_sqlcount = 'select count(*) into @recordcount from student where 1 = 1';if inname is NOT NULL and inname <> '' thenset v_studentname = concat(' and name like ''%',inname,'%''');elseset v_studentname = '';end if;set v_sqlcount = concat(v_sqlcount, v_studentname);set v_sqlselect = concat(v_sqlselect, v_studentname);set @sqlcount = v_sqlcount;set @sqlselect = v_sqlselect;prepare stmtcount from @sqlcount;prepare stmtselect from @sqlselect;execute stmtcount;execute stmtselect;deallocate prepare stmtcount;deallocate prepare stmtselect;set OutTotalCount = @recordcount;end;C++调用过程:连接数据库代码省略....MYSQL_RES *res_ptr = NULL; MYSQL_ROW sqlrow; unsigned int nValue = 0; char szSql[1024] = {0}; int nlen = sprintf(szSql,"call p_querystudent('',@nValue)"); int nRet = mysql_real_query(conn_ptr, szSql, nlen); if(nRet) { printf("Query Error,erro_int[%d] erro_str[%s]\n", mysql_errno(conn_ptr), mysql_error(conn_ptr)); } else { res_ptr = mysql_use_result(conn_ptr); if(res_ptr) { while((sqlrow = mysql_fetch_row(res_ptr))) { unsigned int field_count = 0; while(field_count < mysql_field_count(conn_ptr)) { printf("%s ", sqlrow[field_count]); field_count++; } printf("\n"); } if(mysql_error(conn_ptr)) { printf("Retrive Data Error:%s\n", mysql_error(conn_ptr)); } mysql_free_result(res_ptr); } }用C++调用该存储过程,已能获取结果集,但是不知道怎么得到输出参数@nValue? [求助]换了nginx前端 后端 Apache 进不了后台了! 请教大家mysql里用binary做为主键 高分求助:如何实现mysql数据库删除两个关联表中不匹配的数据? 各位帮忙看一下。 msyql中ado如何同时update多条记录 急,MYSQL里CTRETE一个表写错了怎么办?ORACLE里可用EDIT修改啊,谢谢! 自己写的一个建表语句,查不出毛病,但是在MySQL里执行不出来,大侠帮忙看下,解决就结贴在线等···· mysql奇怪问题,在线等ing MYSQL INNODB优化 关于 mysql group by 统计问题 关于mysql远程访问 关于mysql巨慢的原因
http://blog.csdn.net/iihero/article/details/8362269里边有存储过程相关调用及取结果的过程。
mysql_query(&mysql, "SELECT @s ");
这个参数s该如何获取呢???
mysql_query(&mysql, "SELECT @s ");
这个参数s该如何获取呢???这个是输出参数 ,直接在存储过程中 set 就可以了 。
//取得存储过程返回值
res = mysql_store_result(&mysql);
你到网查查看
(
id varchar(32) not null,
name varchar(20) not null,
age tinyint unsigned not null,
home varchar(50) not null,
birthday datetime not null,
primary key(id)
)存储过程:
create procedure p_querystudent
(inname varchar(32),
OUT OutTotalCount int unsigned) /*输出参数*/
begin
declare v_sqlselect varchar(4096);
declare v_sqlcount varchar(4096);
declare v_studentname varchar(512);
set v_sqlselect = 'select id,name,age,home,birthday from student where 1 = 1';
set v_sqlcount = 'select count(*) into @recordcount from student where 1 = 1';if inname is NOT NULL and inname <> '' then
set v_studentname = concat(' and name like ''%',inname,'%''');
else
set v_studentname = '';
end if;set v_sqlcount = concat(v_sqlcount, v_studentname);
set v_sqlselect = concat(v_sqlselect, v_studentname);
set @sqlcount = v_sqlcount;
set @sqlselect = v_sqlselect;
prepare stmtcount from @sqlcount;
prepare stmtselect from @sqlselect;
execute stmtcount;
execute stmtselect;
deallocate prepare stmtcount;
deallocate prepare stmtselect;
set OutTotalCount = @recordcount;
end;
C++调用过程:
连接数据库代码省略....MYSQL_RES *res_ptr = NULL;
MYSQL_ROW sqlrow;
unsigned int nValue = 0;
char szSql[1024] = {0};
int nlen = sprintf(szSql,"call p_querystudent('',@nValue)");
int nRet = mysql_real_query(conn_ptr, szSql, nlen);
if(nRet)
{
printf("Query Error,erro_int[%d] erro_str[%s]\n", mysql_errno(conn_ptr), mysql_error(conn_ptr));
}
else
{
res_ptr = mysql_use_result(conn_ptr);
if(res_ptr)
{
while((sqlrow = mysql_fetch_row(res_ptr)))
{
unsigned int field_count = 0;
while(field_count < mysql_field_count(conn_ptr))
{
printf("%s ", sqlrow[field_count]);
field_count++;
}
printf("\n");
} if(mysql_error(conn_ptr))
{
printf("Retrive Data Error:%s\n", mysql_error(conn_ptr));
} mysql_free_result(res_ptr);
}
}
用C++调用该存储过程,已能获取结果集,但是不知道怎么得到输出参数@nValue?