MySql возвращает несколько строк из хранимой процедуры / функции - PullRequest
2 голосов
/ 30 июня 2009

Мне нужно сделать хранимую процедуру или функцию, которая возвращает набор строк. Я заметил, что в хранимой процедуре я могу SELECT * FROM table с успехом. Если я получаю строки в цикле и SELECT something, something_other FROM table один раз за выполнение цикла, я получаю только один единственный результат.

Что мне нужно сделать, так это выполнить цикл, выполнить некоторые вычисления и вернуть набор строк. Какой лучший способ сделать это? Временный стол? Хранимые функции?

Любая помощь приветствуется.

Ответы [ 2 ]

3 голосов
/ 30 июня 2009

Похоже, вы используете курсор внутри тела хранимой процедуры, чтобы выполнить цикл?

Мой первый совет: попытайтесь выполнить свои вычисления в одном запросе, не прибегая к курсорам. Какой именно расчет?

Если вам действительно нужно использовать курсор, вставьте результаты каждого цикла во временную таблицу, а затем ВЫБРАТЬ * из этой таблицы, когда закончите цикл.

0 голосов
/ 30 июня 2009

Вы можете вернуть несколько наборов результатов, но только если клиентская библиотека поддерживает это и клиент ожидает этого. Некоторые этого не делают, поэтому их использование приведет к ошибкам вне последовательности.

Вы, конечно, можете построить временную таблицу, выбрать из нее и поместить ее в процедуру, которая будет безопасна Другой вариант - создать выбор UNION, используя подготовленный оператор SQL, который возвращает все нужные вам строки и выполняет их. Это немного грязно.

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