Проблема с mysql процедурами (stored procedure) -
Josipo - 08.10.2016
Пытаюсь сделать запрос к хранимой процедуре.
Он успешно выполняется, но после него никакие sql -запросы не работают.
(Commands out of sync; you can't run this command now)
Находил похожие вопросы на форуме, но там давали ответ, что нужно делать store_result.
Но, насколько я понимаю, в mysql плагине версии выше R35 нет store_result.
В процедуре есть несколько SELECT, один UPDATE. Она возвращает или SELECT 1 as result, или SELECT 0 as result.
В чём может быть проблема?
Re: Проблема с mysql процедурами (stored procedure) -
Josipo - 08.10.2016
В общем, вопрос снят.
Если кому интересно, то помогло использование mysql_pquery вместо mysql_tquery.
Re: Проблема с mysql процедурами (stored procedure) -
Bombo - 08.10.2016
Quote:
Originally Posted by Josipo
В общем, вопрос снят.
Если кому интересно, то помогло использование mysql_pquery вместо mysql_tquery.
|
Это тоже не выход. Тебе нужно или считать полученный в mysql результат, или изменить процедуру таким образом, чтобы она не возвращала никаких значений. В твоём же случае ты больше не сможешь использовать mysql_pquery для других запросов.
Re: Проблема с mysql процедурами (stored procedure) -
Josipo - 08.10.2016
Quote:
Originally Posted by Bombo
Это тоже не выход. Тебе нужно или считать полученный в mysql результат, или изменить процедуру таким образом, чтобы она не возвращала никаких значений. В твоём же случае ты больше не сможешь использовать mysql_pquery для других запросов.
|
Процедура должна возвращать значение (успешное выполнение или нет).
А можно поподробнее про "считать полученный в mysql результат" ?
Re: Проблема с mysql процедурами (stored procedure) -
Bombo - 09.10.2016
PHP Code:
...
mysql_pquery(global_mysql_descriptor, "тут вызов процедуры", "get_proc_result");
...
public get_proc_result()
{
new rows, fields;
new Cache:my_cache;
new proc_result;
my_cache=cache_save(global_mysql_descriptor);
cache_get_data(rows, fields, global_mysql_descriptor);
if(rows>0)
{
proc_result = cache_get_field_content_int(0, "result", global_mysql_descriptor);
}
if(cache_is_valid(my_cache, global_mysql_descriptor))
cache_delete(my_cache);
}
Хотя бы так.
И непонятно, зачем тебе результат, если ты его не получаешь и всё равно остаёшься доволен работой своего скрипта.
Re: Проблема с mysql процедурами (stored procedure) -
Josipo - 09.10.2016
Quote:
Originally Posted by Bombo
PHP Code:
...
mysql_pquery(global_mysql_descriptor, "тут вызов процедуры", "get_proc_result");
...
public get_proc_result()
{
new rows, fields;
new Cache:my_cache;
new proc_result;
my_cache=cache_save(global_mysql_descriptor);
cache_get_data(rows, fields, global_mysql_descriptor);
if(rows>0)
{
proc_result = cache_get_field_content_int(0, "result", global_mysql_descriptor);
}
if(cache_is_valid(my_cache, global_mysql_descriptor))
cache_delete(my_cache);
}
Хотя бы так.
И непонятно, зачем тебе результат, если ты его не получаешь и всё равно остаёшься доволен работой своего скрипта.
|
Я делаю всё примерно то же самое, кроме cache_delete().
Чуть позже проверю помогает ли этот способ.
Спасибо