sql >> データベース >  >> RDS >> Oracle

Oracle SQLクエリは、テーブルから選択された文字列クエリを実行できますか?

    一般に、これは特に優れた設計ではありません。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を実行します ループ内でデータを返します。次に、パイプラインテーブル関数の上にビューを作成できます。



    1. 合計が指定されたしきい値以上の行の最小数を選択します

    2. MySQLforSymfonyで損失データなしでモデルを再構築します

    3. OracleでCLOB列を照会する方法

    4. オプションのWHEREパラメータを使用したスト​​アドプロシージャ