MySQL++调用存储过程
其实与普通调用SQL没有什么区别,只是连接方式必须使用CLIENT_MULTI_STATEMENTS(多行语句)。样例代码如下:
////////////////////////////////////////////////////////////////////////// // CopyRight(c) 2009, YOYO, All Rights Reserved. // Author: LIN YiQian // Created: 2009/10/14 // Describe: MySQL++调用存储过程 ////////////////////////////////////////////////////////////////////////// #ifdef _DEBUG #pragma comment(lib, "mysqlpp_d.lib") #else #pragma comment(lib, "mysqlpp.lib") #endif #include <mysql++.h> #include <string> #include <iostream> using namespace mysqlpp; using namespace std; int main(void) { Connection conn(false); conn.set_option(new mysqlpp::MultiStatementsOption(CLIENT_MULTI_STATEMENTS)); if (conn.connect("test", "localhost", "root", "root", 3306)) { Query query = conn.query(); char* pszSQL = "call querydate()"; StoreQueryResult pResult = query.store(pszSQL, strlen(pszSQL)); cout << pResult[0][0] << endl; } else { cout << "连接失败!" << endl; } system("pause"); return 0; }
Navicat: Can't create a procedure from within another stored routine
测试调用mysql的存储过程,于是用Navicat写,结果报这个错误,源代码如下:
-
CREATE PROCEDURE QueryDate()
-
BEGIN
-
SELECT CURDATE();
-
END;
google了下,原来在Navicat里面不需要写头,直接从BEGIN开始即可。
过程名将在保存的时候填写,参数则可以填在代码定义框下面的参数输入框中,如果要使用返回值,则可以设定类型为FUNCTION,回传框即可填写。