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

Oracleでの動的SQLクエリの実行

    ダイナミック 文字列は「一重引用符」で囲む必要があります

    OPEN OUT_CUR FOR
         'SELECT * FROM MYTABLE WHERE ID '|| DYN_QUERY;
    

    EXECUTE IMMEDIATE BULK COLLECTを使用する場合、複数行の結果を許可します

    例:

    DECLARE
      TYPE myarray IS TABLE OF VARCHAR2(100);
      v_array myarray;
    BEGIN
      EXECUTE IMMEDIATE 'select ''x'' from dual union all select ''y'' from dual'
        BULK COLLECT INTO v_array;
    
      --Or you could use the alternative quoting mechanism to avoid doubling quotation marks.
      --EXECUTE IMMEDIATE q'[select 'x' from dual union all select 'y' from dual]'
      --  BULK COLLECT INTO v_array;
    
      FOR i IN 1..v_array.count
      LOOP
        DBMS_OUTPUT.PUT_LINE(v_array(i));
      END LOOP;
    END;
    

    EXECUTE IMMEDIATE バインド変数の使用;

    String := 'SELECT * FROM EMP WHERE name = :name AND age = :age AND :name <> ''Mahesh''';
    
    EXECUTE IMMEDIATE String USING 'Mahi',21,'Mahi';
    <OR>
    EXECUTE IMMEDIATE String USING proc_variable1,proc_variable2,proc_variable1;
    



    1. UNION句を使用して選択する

    2. Oracle sqlでの%Typeの意味は何ですか?

    3. カーソルなしで、別のストアドプロシージャ内からストアドプロシージャの結果を反復処理するにはどうすればよいですか?

    4. パラメータ番号が無効です。重複更新のPDOが失敗します