C++ MariaDB,在c+中执行存储过程时出现语法错误+;程序
首先,感谢您阅读此问题,并为我的英语水平低下表示歉意 我现在正在将我的数据库从SQL Server转换为MariaDB。我安装了MySQL ODBC驱动程序并添加了“系统DSN”。(C:\Windows\SysWOW64\odbcad32.exe) 执行存储过程时出现问题 当我在SQLyog中创建一个过程时,没有出现错误,执行也运行良好。但是当我在C++应用程序中执行存储过程时,语法错误发生。 数据库[MySQL][ODBC 5.3(w)驱动程序][mysqld-5.5.5-10.0.20-MariaDB] SQL语法有错误;检查相应的手册 您的MariaDB服务器版本需要使用正确的语法 “get_bookProperty?”在第1行 <我的C++代码是…C++ MariaDB,在c+中执行存储过程时出现语法错误+;程序,c++,mysql,odbc,C++,Mysql,Odbc,首先,感谢您阅读此问题,并为我的英语水平低下表示歉意 我现在正在将我的数据库从SQL Server转换为MariaDB。我安装了MySQL ODBC驱动程序并添加了“系统DSN”。(C:\Windows\SysWOW64\odbcad32.exe) 执行存储过程时出现问题 当我在SQLyog中创建一个过程时,没有出现错误,执行也运行良好。但是当我在C++应用程序中执行存储过程时,语法错误发生。 数据库[MySQL][ODBC 5.3(w)驱动程序][mysqld-5.5.5-10.0.20-Ma
bool LoadbookProperty::OnExecute(db::IDbProcesser* dbProcesser)
{
const char* bookName = m_bookName.c_str();
dbProcesser->BindParams(bookName);
if (!dbProcesser->Execute("get_bookProperty"))
return false;
char type[PROPERTY_NAME_LEN];
char value[PROPERTY_VALUE_LEN];
dbProcesser->BindCols(type, value);
dbProcesser->FetchWith([this, &type, &value]()
{
m_properties.push_back(std::make_pair(type, value));
});
return true;
}
我的程序是
USE bookInfoDB;
-- GetbookProperty
DELIMITER ;;
CREATE PROCEDURE get_bookProperty (
IN pi_bookName VARCHAR(32)
)
this_proc:BEGIN
DECLARE EXIT HANDLER FOR SQLEXCEPTION
BEGIN
ROLLBACK;
END;
SELECT bookName, bookPrice FROM bookProperty WHERE bookName = pi_bookName;
END ;;
DELIMITER ;
我真的不知道怎么了。请帮帮我 解决了!原因在于执行功能。当我的团队使用SQL Server时,执行函数的字符串组合是EXEC,没有括号。 (大家都知道,SQL Server通过“EXEC sp_name arg1 arg2…”执行过程)
但是MySQL(以及MariaDB)的过程执行语法是“调用sp_名称(arg1,arg2…)。我们的程序员已经改变了执行函数的字符串组合。然后呢?它工作得很好 你试过调用get\u bookProperty吗?我试过在SQLyog和mysql控制台中调用get\u bookProperty。两个都很好。你是说…更改我的cpp代码?执行呼叫?