API调用存储过程并传递参数 MYSQL C++

关于MYSQL API调用存储过程大致分为四步:

第一步:创建存储过程,关键字是PROCEDURE

sql = "CREATE  PROCEDURE `p_test`(IN p_in int ,OUT p_out int,INOUT p_inout int) \
		BEGIN\
		SELECT p_in,p_out,p_inout;\
		set p_in=100, p_out=200,p_inout=300;\
		SELECT p_in,p_out,p_inout;\
		END";

第二步:定义变量并赋值;

sql="SET @A=1; SET @B=2; SET @C=3;";

第三步:调用存储过程

sql="call p_test (@A, @B, @C)";

第四步:获取存储过程的结果

sql="SELECT @A, @B, @C";

完整代码

#define _CRT_SECURE_NO_WARNINGS
#include
#include
#include
#include
#include
#include
#include
//计时
#include
using namespace std;
using namespace chrono;


int main()
{
	const char* host = "127.0.0.1";
	const char* user = "root";
	const char* password = "******";
	const char* database = "database_test";
	int port = 3306;

	MYSQL mysql;
	mysql_init(&mysql);
	mysql_library_init(0, NULL, NULL);
	//防止乱码
	mysql_options(&mysql, MYSQL_SET_CHARSET_NAME, "GBK");

	//支持多条sql语句 CLIENT_MULTI_STATEMENTS   clientflag  默认是不支持的
	//if (!mysql_real_connect(&mysql, host, user, password, database, port, 0, 0))
	if (!mysql_real_connect(&mysql, host, user, password, database, port, NULL, CLIENT_MULTI_STATEMENTS))
	{
		cout << "failed to connect" << host << mysql_error(&mysql) << endl;
	}

	else
	{
		cout << "successfully connected " << host <

分析结果:

输出为

API调用存储过程并传递参数 MYSQL C++_第1张图片

我们发现,输入in是1,set设置成100,返回还是1,因为他只是输入,没有修改

输出out 首先为2,set设置为200,返回是200;但是IN Proc: B的位置是NULL,原因是B是OUT输出, OUT变量它的传进来的参数是没有用的,inout传进去的参数是有用的;

inout既是输入,又是输出,首先是3,set设置为300,返回300

你可能感兴趣的:(mysql,c++,数据库)