Oracleで動的SQLを実行する
Oracle PL/SQL 編9 - 動的 SQL、EXECUTE IMMEDIATE、using、into、returning - SAK Streets
「EXECUTE IMMEDIATE 」を利用すると、任意の文字列をSQLとして実行することができる。
execute immediate 'select sysdate from dual'; execute immediate 'drop table test';
バインド変数を利用する場合:
declare sql1 varchar2(2000); begin sql1 := 'insert into test values (:data1, :data2)'; execute immediate sql1 using 100, 200; end; / declare data1 number; data2 number; sql1 varchar2(2000); begin data1 := 100; data2 := 200; sql1 := 'insert into test values (:data1, :data2)'; execute immediate sql1 using data1, data2; end; /
変数に実行結果を入れる(単一行であること):
execute immediate 'select sysdate from dual' into testDate;
カーソルに実行結果を入れる
declare type cutype is ref cursor; cv cutype; item1 テストm.キー%type; begin open cv for 'select キー from テストm where キー like :data1' using 'a%'; loop fetch cv into item1; exit when cv%notfound; dbms_output.put_line (item1); end loop; close cv; end; /