一般に、これは特に優れた設計ではありません。SQLをテーブルに格納し、動的に実行すると、あらゆる種類のセキュリティとメンテナンスの問題が発生します。
スキーマ内のすべてのテーブルに対してcount(*)を実行するこのクエリ これはすべて1つのクエリで実行されます。
ただし、大多数のプログラマーにとって、より簡単なアプローチは、クエリをループし、一度に1つずつ実行して、結果をどこかに保存することです。たとえば、ローカル変数がカウントのコレクションに追加される可能性があります。
FOR q IN (SELECT sql_text FROM query_table)
LOOP
EXECUTE IMMEDIATE 'SELECT COUNT(*) FROM (' || q.sql_text || ')'
INTO some_local_variable;
<<do something with the local variable>>
END LOOP;
ビューを作成しようとしているので、このロジックを取得して、パイプライン化されたテーブル関数に入れることができます。 PIPE ROW
を実行します ループ内でデータを返します。次に、パイプラインテーブル関数の上にビューを作成できます。