MySql возвращает несколько строк из хранимой процедуры / функции



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



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



Любая помощь ценится.

523   2  

2 ответов:

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

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

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

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

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

Comments

    Ничего не найдено.