Почему я не могу написать DDL сразу после анонимного блока PLSQL?

У меня есть следующий простой скрипт.

declare
begin
  null;
end;

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

Его выполнение заканчивается следующей ошибкой

ORA-06550: строка 6, столбец 1:

PLS-00103: обнаружен символ CREATE

  1. 00000 - строка %s, столбец %s:\n%s

*Причина: обычно ошибка компиляции PL/SQL.

*Действие:

Могу ли я использовать DDL сразу после анонимного блока? Я вынужден делать это с EXECUTE IMMEDIATE внутри анонимного блока?


person Jagger    schedule 20.09.2016    source источник
comment
Почему именно ДДЛ? Вы не можете сделать ничего без завершения блока.   -  person William Robertson    schedule 20.09.2016
comment
Совсем новичок в PL/SQL, поэтому не знал об этой магической косой черте.   -  person Jagger    schedule 20.09.2016
comment
Косая черта на самом деле не является частью PL/SQL — она будет зависеть от клиентского приложения. Дело в том, что select тоже не сработало бы, или insert, update, delete и т.д.   -  person William Robertson    schedule 20.09.2016
comment
Согласен, просто у меня была такая проблема именно на этом конкретном DDL, я не против того, что и с DML не работает. :)   -  person Jagger    schedule 20.09.2016


Ответы (1)


Вам просто не хватает '/':

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.

Здесь вы найдете что-то еще.

person Aleksej    schedule 20.09.2016
comment
Вот оно! Благодарю вас! - person Jagger; 20.09.2016