首先,感謝您閱讀這個問題,併爲我可憐的英語道歉。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++代碼是...
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 ;
我真的不知道發生什麼事了。請幫幫我。
你嘗試過'調用get_bookProperty'嗎? –
我試過在SQLyog和mysql控制檯中調用get_bookProperty。兩者都運行良好。你的意思是......改變我的cpp代碼?執行調用? – passion053