Хранимая процедура MySQL, множественные SELECT возвращают только одну строку? - PullRequest
3 голосов
/ 03 апреля 2012

Я работал над хранимой процедурой, которая запускает оператор выбора в цикле.

При просмотре результатов через mysqli или phpmyadmin я получаю только одну строку. Что мне нужно сделать, чтобы вернуть несколько строк?

Вот очень простой пример, иллюстрирующий мою проблему ...

DROP PROCEDURE IF EXISTS simple //
CREATE PROCEDURE simple()
BEGIN

DECLARE c INT(10);
SET c = 1;

REPEAT

  SELECT c;
  SET c = c + 1;

UNTIL c >= 10 END REPEAT;

END //

1 Ответ

1 голос
/ 03 апреля 2012

Я думаю, что лучший способ справиться с этим - сохранить результаты во временную таблицу, а затем сделать окончательный выбор в конце цикла while.

DROP PROCEDURE IF EXISTS simple //
CREATE PROCEDURE simple()
BEGIN

    CREATE TEMPORARY TABLE output (finalC INT(10));

    DECLARE c INT(10);
    SET c = 1;

    REPEAT

      INSERT INTO output SELECT c;
      SET c = c + 1;

    UNTIL c >= 10 END REPEAT;

    SELECT * FROM output;

END //
...