Я пытаюсь написать хранимую процедуру в MySQL, которая будет выполнять несколько простой запрос выбора, а затем перебирать результаты, чтобы решить, следует ли выполнять дополнительные запросы, преобразования данных или вообще отбрасывать данные. По сути, я хочу реализовать это:
$result = mysql_query("SELECT something FROM somewhere WHERE some stuff");
while ($row = mysql_fetch_assoc($result)) {
// check values of certain fields, decide to perform more queries, or not
// tack it all into the returning result set
}
Только, я хочу это только в MySQL, поэтому его можно вызывать как процедуру. Я знаю, что для триггеров существует синтаксис FOR EACH ROW ...
, но я не могу найти упоминания о чем-либо подобном для использования вне синтаксиса CREATE TRIGGER ...
. Я прочитал некоторые механизмы зацикливания в MySQL, но пока все, что я могу себе представить, это то, что я буду реализовывать что-то вроде этого:
SET @S = 1;
LOOP
SELECT * FROM somewhere WHERE some_conditions LIMIT @S, 1
-- IF NO RESULTS THEN
LEAVE
-- DO SOMETHING
SET @S = @S + 1;
END LOOP
Хотя даже это несколько смутно для меня.
Для справки, хотя я не думаю, что это обязательно уместно, первоначальный запрос будет объединять четыре таблицы вместе, чтобы сформировать модель иерархических разрешений, а затем, основываясь на том, как высоко в цепочке находится конкретное разрешение, он получит дополнительная информация о детях, которым должно быть унаследовано это разрешение.