Проблемы с вызовом хранимых процедур MySQL из C API - PullRequest
0 голосов
/ 28 февраля 2010

У меня проблема с вызовом хранимой процедуры на моем сервере MySQL с использованием API C.

Я использую mysql_query (& handle, "CALL myprocedure"), но функция завершается с ошибкой (возвращает 1), и поиск ошибки даетследующее сообщение «Процедура myprocedure не может вернуть набор результатов в данном контексте.»Я даже пытался использовать mysql_real_query insted, но не лучше.

Я видел несколько тем об этой ошибке, но только связанных с PHP.Так что, похоже, такая же проблема есть и для программ на Си.

Странно то, что моя хранимая процедура даже не должна возвращать какой-либо набор результатов.Он просто работает с данными в таблицах, ничего не возвращает.

Спасибо за любые советы.

Ответы [ 2 ]

1 голос
/ 28 февраля 2010

См. Функции:
mysql_set_server_option () &
mysql_real_connect ()
здесь.

Несколько операторов разрешены (временно) только с использованием аргументов MYSQL_OPTION_MULTI_STATEMENTS_ON и _OFF в mysql_set_server_option ().

Проблема здесь в том, что CLIENT_MULTI_STATEMENTS в mysql_real_connects () неявно включает CLIENT_MULTI_RESULTS тоже, но MYSQL_OPTION_MULTI_STATEMENTS_ON включает только несколько операторов, не несколько результатов.

Поэтому добавьте CLIENT_MULTI_STATEMENTS при подключении и повторите попытку.

0 голосов
/ 28 февраля 2010

Вы пытались вызвать эту процедуру из клиента командной строки 'mysql'?
Вы можете вызвать (другую) пустую процедуру, чтобы проверить, связана ли проблема с процедурой?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...