Процедура MySQL несколько результатов - PullRequest
0 голосов
/ 28 октября 2011

Основная идея заключается в том, что когда я вызываю процедуру, я хочу получить набор данных, а не только одно значение (установив для results значение INT и выбрав COUNT(id), например).Я хотел бы знать, как изменить эту процедуру, чтобы получить несколько значений ...

DELIMITER //
 CREATE PROCEDURE getnames(IN id_in INT,OUT results ???)
    BEGIN
        set results=(select name from people where id>id_in);
    END //
 DELIMITER ;

Ответы [ 3 ]

2 голосов
/ 28 октября 2011

Если я не понял неправильно, вы можете просто изменить свою процедуру на следующую

DELIMITER //
  CREATE PROCEDURE getnames(IN id_in INT)
    BEGIN
      select name from people where id>id_in;
    END //
DELIMITER ;

Это просто вернет результаты запроса select, в данном случае это набор имен.

1 голос
/ 28 октября 2011

Параметры в MySQL не могут быть объектами или таблицами. Если вы хотите вернуть несколько значений, попробуйте заполнить временную таблицу или просто запустите инструкцию SELECT в процедуре и прочитайте набор данных в приложении.

1 голос
/ 28 октября 2011

Проблема в том, что MySQL разрешает только типы данных столбцов таблицы в хранимых процедурах.К сожалению, это не относится ни к какому массиву, списку или типу коллекции.

Подобный вопрос задавался ранее .Прочитайте ответы - они могут помочь вам.Один из них включает передачу списка через запятую в большом типе данных VARCHAR.

Другой альтернативой для возврата результатов является сохранение результатов в «таблице результатов», вызов процедуры и затем обращение крезультаты в «таблице результатов» из вызывающего кода.

...