2011-09-27 6 views
18

でテーブルを変更しようとしている私はtest.sql内のファイルを作成しているときにエラーを取得し、私の内側には入れ:SQLブロック

begin 
alter table table1 enable row movement; 
alter table table1 shrink space; 
end; 
/

を、これは許可されていませんか?エラーが発生するため:

答えて

34

PL/SQLブロック内で静的SQLとしてDDLを発行することはできません。あなたがPL/SQLブロック内でそれらのコマンドを置きたい場合は、動的SQLを使用する必要があるだろう、すなわち

BEGIN 
    EXECUTE IMMEDIATE 'alter table table1 enable row movement'; 
    EXECUTE IMMEDIATE 'alter table table1 shrink space cascade'; 
END; 
/

それは、しかし、より簡単かもしれただ一つのPLを発行するのではなく、連続したSQL文を発行します/ SQLブロック。

+0

もう一度ありがとうございます。独立して実行するステートメントが多すぎます。 – Victor