やや単純な選択クエリを実行し、追加のクエリ、データ変換、またはデータを完全に破棄するかどうかを決定するために結果をループするストアド プロシージャを 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
これでも頭がぼやけていますが。
参考までに、必ずしも関係があるとは思いませんが、最初のクエリは 4 つのテーブルを結合して階層的なアクセス許可のモデルを形成し、特定のアクセス許可がチェーンのどの程度上にあるかに基づいて、次の追加情報を取得します。その権限を継承する子。