LINUX.ORG.RU

Как составить процедуру, которая возвращает набор значений, а не только одно

 


0

2

Задача:

Написать процедуру/функцию (не принципиально, что именно), на вход которой подается четыре INT, а возвращает она список INT'ов.

Проблема в том, что я не знаю, как из процедуры или функции вернуть набор значений, а не одно.

Прочел ман по mysql - у меня так и не получилось написать процедуру для возврата набора значений.

Варианты решения, которые нашел я:

1. Промежуточная таблица, ее блокировки etc.

2. Взять другую БД.

Какие еще есть варианты решения этой задачи?

★★

по опыту решения похожей задачи в другой БД могу предположить, что стоит искать решение основываярь на формате данных, ожидаемом там, куда этот набор передается. это может быть как некоторый тип данных вроде массива, так и «выборка, генерируембя процедурой»

GPFault ★★
()
Ответ на: комментарий от GPFault

стоит искать решение основываярь на формате данных, ожидаемом там, куда этот набор передается

там, куда этот набор передается

Я тебя не понял. В идеале, я хочу получить N INT'ов, то есть, N строк с одним столбцом, где в каждой N-ной строке N-ный INT.

bk_ ★★
() автор топика

Мне на ум пришла идея возвращать INT в строке, тогда нужно разделять числа специальным символом. Потом эту строку распарсить и значения в массив совать, к примеру. Точно знаю, как это на С написать

ms-dos32
()
Ответ на: комментарий от Attila

Через временную таблицу? А если несколько запросов одновременно - только один будет работать, пока все остальные будут ждать или вообще провалятся с ошибкой на CREATE TEMPORARY TABLE?

bk_ ★★
() автор топика

Использовать, если возможно, view вместо процедуры. Императивные части вынести в функции.

k_andy ★★★
()
Ответ на: комментарий от bk_

Я тебя не понял. В идеале, я хочу получить N INT'ов, то есть, N строк с одним столбцом, где в каждой N-ной строке N-ный INT.

А как насчет SELECT result1 UNION SELECT result2 UNION SELECT result3?

red_eyed_peguin
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.