時間範囲をフィルタリングする複雑なSELECT
クエリがあります。この時間範囲(開始日と終了日)をユーザー指定のパラメータを使用して指定します。だから私はこれを行うストアドプロシージャを使用することができ、戻り値は複数行の結果セットです。私が抱えている問題は、後でこの結果セットを処理する方法です。ストアドプロシージャは、単にパラメータを取りSELECT
であってもストアドプロシージャからのデータの選択
SELECT * FROM (CALL stored_procedure(start_time, end_time))
:私のような何かを行うことはできません。サーバーサイドの準備済みステートメントも動作しません(永続的でもありません)。 一時テーブルを使用することをお勧めする人もいます。理想的な解決策ではない理由は、1)私はテーブルスキーマを指定したくないし、そうする必要があると思われます.2)一時テーブルの有効期間はクエリの呼び出しに限られます。それを超えて持続する必要はありません。
要約すると、永続的なプリペアドステートメントのようなものが欲しい。サーバー側は、その戻り値がMySQLがサブクエリのように操作できる結果セットである。何か案は?ありがとう。
ところで、私はMySQL 5.0を使用しています。私はそれがかなり古いバージョンだと知っていますが、この機能はそれ以上の新しいバージョンには存在していないようです。他のSQLエンジンでストアドプロシージャからSELECTを実行できるかどうかはわかりません。切り替えは現時点では選択肢ではありませんが、私が将来切り替えることを決めた場合には、それが可能かどうかを知りたいと思います。
ストアドプロシージャを必要に応じてサブクエリとして呼び出すことはできないため、状況によってはビューを使用できますか? – DTest
ビューが機能しない理由は、サブクエリがパラメータを取り込むためです。ビューでは、クエリ全体を設定する必要があります。 –