Прежде всего, спасибо за прочитанный этот вопрос и извиниться за мой плохой английский.MariaDB, Ошибка синтаксиса при выполнении хранимой процедуры в программе C++
Я сейчас конвертирую свою БД из SQL-Server в MariaDB. Я установил драйвер ODBC MySQL и добавил «системный DSN». (C: \ Windows \ SysWOW64 \ odbcad32.exe)
Проблема возникла при выполнении хранимой процедуры.
Когда я создал процедуру в SQLyog, не было ошибок, и выполнение также отлично работает. Но когда я выполняю хранимую процедуру в моем симуляторе с ++, возникает ошибка синтаксиса.
базы данных [MySQL] [ODBC 5.3 (ж) Driver] [туздЫ-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 ;
Я действительно не знаю, в чем дело. Пожалуйста, помогите мне.
Вы пробовали 'call get_bookProperty'? –
Я попытался «вызвать get_bookProperty» в консоли SQLyog и mysql. И оба отлично работают. Вы имеете в виду ... изменить мой код cpp? выполнить вызов? – passion053