PL/SQL上で動的なSELECT文を実行するには、EXECUTE IMMEDIATE~INTOを使用します。
サンプル
例)動的SQLでSELECT文を実行する
1 2 3 4 5 6 7 8 9 10 11 12 13 |
DECLARE --変数宣言 aa VARCHAR2(10); bb VARCHAR2(10); BEGIN --SQL文字列を実行 EXECUTE IMMEDIATE 'select col1, col2 from mytbl where id = ''1'' ' INTO aa, bb; --値を表示 DBMS_OUTPUT.PUT_LINE('aaは' || aa || ' bbは' || bb); END; |
- 実行例
- SQL> / aaはhoge bbはhege PL/SQLプロシージャは正常に完了しました。
DBMS_OUTPUT.PUT_LINEを実行する時は、事前に「set serveroutput on」コマンドを実行しておく必要があります。
解説
- 複数件を返すSQLであった場合など、INTOに指定した型と合っていない場合は、
「ORA-00932:データ型が一致しません。」が発生します。 - 動的SQLでDDL(INSERT, UPDATE, DELETE)文を実行したい場合は、以下ページをご覧ください。 → 動的SQLでINSERT、UPDATE、DELETEを実行する