MySql возвращает несколько строк из хранимой процедуры / функции
Мне нужно создать хранимую процедуру или функцию, которая возвращает набор строк. Я заметил, что в хранимой процедуре я могу SELECT * FROM table с успехом. Если я извлекаю строки в цикле и SELECT something, something_other FROM table один раз за выполнение цикла, я получаю только один результат.
То, что мне нужно сделать, - это выполнить цикл, выполнить некоторые вычисления и вернуть набор строк. Как лучше всего это сделать? Временный столик? Сохраненные функции?
Любая помощь ценится.
2 ответов:
Похоже, что вы используете курсор внутри тела хранимой процедуры для выполнения цикла?
Мой первый совет: попробуйте выполнить вычисления в одном запросе, не прибегая к курсорам. Каков точный расчет?
Если вам действительно нужно использовать курсор, то вставьте результаты каждого цикла во временную таблицу,а затем выберите * из этой таблицы, когда вы закончите цикл.
Можно возвращать несколько результирующих наборов, но только если клиентская библиотека поддерживает их и клиент ожидает их получения. Некоторые этого не делают, поэтому их использование приведет к ошибкам вне последовательности.
Вы, конечно, можете построить временную таблицу, выбрать из нее и поместить ее в процедуру, что было бы безопасно. Другой вариант-построить UNION select с помощью подготовленной инструкции SQL, которая возвращает все необходимые строки и выполняет это. Это немного запутанно.
Comments