5、C语言调用存储过程的方法步骤:
5.1、Mysql 的句柄初始化
if(!mysql_init(&mysql))
{
printf("mysql_init failed!\n");
return 0;
}
5.2、连接到MySQL数据库
//login or connect
if(!mysql_real_connect(&mysql,"localhost","root","","billingdb",0,NULL,CLIENT_MULTI_STATEMENTS))
{
printf("mysql_real_connect() failed!\n");
mysql_close(&mysql);
return 0;
}
5.3、调用存储过程
//call
strcpy(query,"call querystudent (1,@ret,@ out_name,@ out_age)");
printf("query sql=[%s]\n",query);
ret= mysql_real_query(&mysql,query,(unsigned int)strlen(query));
5.4、查询返回值及输出参数值
mysql_query(&mysql, "SELECT @ret,@ out_name,@ out_age ");
//get result
if (ret)
{
printf("Error exec query: %s\n",mysql_error(&mysql));
}
else
{
printf("[%s] exec...\n", query);
}
results = mysql_store_result(&mysql);
5.5、获取结果值
while((record = mysql_fetch_row(results))) {
printf("[%s]-[%s]-[%s]\n", record[0], record ,record );
}
常规的存储过程将只返回结果,^_^。
5.6、释放资源和mysql连接句柄
mysql_free_result(results);
mysql_close(&mysql);
6、结论
Mysql 的存储过程可以实现相当强大的功能,这里只是一些基本的用法,希望能给你一些帮助。也欢迎分享......
7、个人使用经验心得
像C#调用都可以绑定输出参数,直接通过输出参数得到值,但是c++中使用prepare绑定输出参数,却返回以下错误信息:
Error Code: 1414. OUT or INOUT argument 2 for routine knockout_dbo.ko_SignUpYoungBoxer is not a variable or NEW pseudo-variable in BEFORE trigger