oracle – 尝试在sql块中更改表时获取错误

前端之家收集整理的这篇文章主要介绍了oracle – 尝试在sql块中更改表时获取错误前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我创建一个test.sql文件,里面我放:
begin
alter table table1 enable row movement;
alter table table1 shrink space;
end;
/

这是不允许的?因为我收到错误

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
您不能在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;
/

但是,只需发出连续的sql语句,而不是发出单个PL / sql块可能会更容易。

原文链接:/oracle/205770.html

猜你在找的Oracle相关文章