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

PLSQL動的クエリ

    動的SQLはPL/SQL変数を認識できません。SQLエンジンのスコープで実行できる文字列を渡す必要があります。したがって、テーブル名をステートメントの定型文と連結する必要があります。

    query1 := 'SELECT max(c)  FROM ' || variable_name;
    

    また、クエリの結果を変数に返す必要があります。

    仕組みは次のとおりです(例から不要なコードの一部を削除しました):

    DECLARE    
     c_table VARCHAR2(40);
     c_obj VARCHAR2(20);
    BEGIN
       for lrec in ( select a as tab_name from A )
       LOOP
          EXECUTE IMMEDIATE 'SELECT max(object_ref)  FROM ' || lrec.tab_name 
               into c_obj ;
          dbms_output.put_line('Maximum value: '|| lrec.tab_name
               || '='|| c_obj);
       END LOOP;
    END;
    


    1. MySQL-JOINとWHEREを使用して平均時間を決定する

    2. PostgreSQLの実行速度が遅い?ソースに到達するためのヒントとコツ

    3. エラー:データソースが接続の確立を拒否しました、サーバーからのメッセージ:接続が多すぎます

    4. ReadyCloud ReadyShipper X