我创建了一个test.sql文件,里面我放了:
begin
alter table table1 enable row movement;
alter table table1 shrink space;
end;
/
Run Code Online (Sandbox Code Playgroud)
这是不允许的?因为我收到错误:
Encountered the symbol "ALTER" when expecting one of the following:
begin case declare exit for goto if loop mod null pragma
raise return select update while with <an identifier>
<a double-quoted delimited-identifier> <a bind variable> <<
close current delete fetch lock insert open rollback
savepoint set sql execute commit forall merge pipe
Run Code Online (Sandbox Code Playgroud)
Jus*_*ave 45
您不能在PL/SQL块中将DDL作为静态SQL发出.如果要将这些命令放在PL/SQL块中,则需要使用动态SQL,即
BEGIN
EXECUTE IMMEDIATE 'alter table table1 enable row movement';
EXECUTE IMMEDIATE 'alter table table1 shrink space cascade';
END;
/
Run Code Online (Sandbox Code Playgroud)
但是,发布连续的SQL语句而不是发出单个PL/SQL块可能更容易.
| 归档时间: |
|
| 查看次数: |
24118 次 |
| 最近记录: |