動的なPL/SQL実行方法
PL/SQLに含まれるSQLには、静的SQLと動的SQLがあります。動的SQLを使用すると、その時の要望に応じてSQL文を自由に組み立てることが可能になります。例えばWHERE句の条件を毎回変更することが出来るので、状況に応じた処理が可能になるのです。ただし動的SQLでは、実行時までプログラムが未定となるため、実行時にSQLの解析を行います。そたのため、静的SQLに比べるとパフォーマンスが劣ります。
本項では、EXECUTE IMMEDIATE文を使用した動的なSQLを実行方法を解説します。
以下に動的なDDL文の作成例を示します。
SQL> CREATE OR REPLACE PROCEDURE mddl_sample(mtable VARCHAR2)
2 IS
3 mddl_sql VARCHAR2(100) := 'DROP ' || mtable;
4 BEGIN
5 DBMS_OUTPUT.PUT_LINE(mddl_sql);
6 EXECUTE IMMEDIATE mddl_sql;
7 END;
8 /
プロシージャが作成されました。
SQL>
|
以下に実行例を示します。
SQL> SET SERVEROUTPUT ON SQL> EXECUTE mddl_sample('test1');
DROP TABLE test1
PL/SQLプロシージャが正常に完了しました。
SQL> EXECUTE mddl_sample('test2');
DROP TABLE test2
PL/SQLプロシージャが正常に完了しました。
SQL>
|
|
スポンサードリンク
|