Mysql хранимая процедура - PullRequest
3 голосов
/ 28 июня 2010

Я создал хранимую процедуру в Mysql, как:

DELIMITER //
CREATE PROCEDURE test()
BEGIN
  SELECT *  FROM buyers;
END //
DELIMITER ;

, но когда я вызываю ее, используя,

call test()

, она возвращает сообщение об ошибке:

# 1312 - PROCEDURE ticketninja.test1 не может вернуть набор результатов в данном контексте

Ответы [ 2 ]

2 голосов
/ 28 июня 2010

Убедитесь, что ваш код (или клиентская библиотека) вызывает mysql_set_server_options() с включенным MYSQL_OPTION_MULTI_STATEMENTS_ON.

2 голосов
/ 28 июня 2010

Операторы, которые возвращают набор результатов, могут использоваться в хранимой процедуре, но не в хранимой функции.Этот запрет включает в себя операторы SELECT, у которых нет предложения INTO var_list, и другие операторы, такие как SHOW, EXPLAIN и CHECK TABLE.Для операторов, которые могут быть определены во время определения функции для возврата набора результатов, возникает Не разрешено возвращать набор результатов из ошибки функции (ER_SP_NO_RETSET).Для операторов, которые могут быть определены только во время выполнения для возврата набора результатов, PROCEDURE% s не может вернуть набор результатов в данном контексте, возникает ошибка (ER_SP_BADSELECT).

Возможно, вам нужно использоватьвременная таблица, как в этом примере:

...