PL/SQLでDDL文を発行する方法
PL/SQLでDDL文を発行する場合、「EXECUTE IMMEDIATE」を使用します。
EXECUTE IMMEDIATE '<DDL文>';
PL/SQLでDDL文を発行する実行例
PL/SQLでDDLであるTRUNCATEを発行してみましょう。普通にTRUNCATE文を発行すると以下のようにエラーが発生します。
SQL> DECLARE 2 BEGIN 3 TRUNCATE TABLE animal1; 4 END; 5 / TRUNCATE TABLE animal1; * 行3でエラーが発生しました。: ORA-06550: 行3、列11: PLS-00103: 記号"TABLE"が見つかりました。 次のうちの1つが入るとき: := . ( @ % ; 記号":= が続行のために"TABLE"の前に挿入されました。
「EXECUTE IMMEDIATE」を使用すると以下のようにDDLを発行できます。
SQL> DECLARE 2 BEGIN 3 EXECUTE IMMEDIATE 'TRUNCATE TABLE animal1'; 4 END; 5 / PL/SQLプロシージャが正常に完了しました。
PL/SQLでDDL文を発行する注意点
DDLを発行したあとOracleの場合、暗黙的にコミットを発行します。
先行トランザクションがある場合、ロールバックができなくなるので気をつけてください\(^o^)/
コメント