为什么我不能直接在 PLSQL 匿名块之后写 DDL?

Why can't I write DDL directly after a PLSQL anonymous block?

我有以下简单的脚本。

declare
begin
  null;
end;

create table &&DB_SCHEMA..test_table (
   test_column varchar(20)
);

执行结束,出现以下错误

ORA-06550: line 6, column 1:

PLS-00103: Encountered the symbol "CREATE"

  1. 00000 - "line %s, column %s:\n%s"

*Cause: Usually a PL/SQL compilation error.

*Action:

我不能在匿名块之后直接使用 DDL 吗?我是否被迫在匿名块中使用 EXECUTE IMMEDIATE 来做到这一点?

您只是缺少一个“/”:

SQL> declare
  2  begin
  3    null;
  4  end;
  5  /

PL/SQL procedure successfully completed.

SQL> create table create_test_table (
  2     test_column varchar(20)
  3  );

Table created.

Here 你发现了更多东西。