Oracle PL/SQLでDDL文を発行する 「EXECUTE IMMEDIATE」

スポンサーリンク
スポンサーリンク

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^)/

コメント

タイトルとURLをコピーしました