Я выполнил следующий код в базе данных Oracle, но столкнулся с ошибкой имени представления, которого нет. Может ли кто-нибудь заглянуть в нее?Выполнять немедленные по заявлениям DDL
Declare
Stmt varchar2(2000);
Var number;
Begin
Stmt:='create or replace view emp_dept_v as select * from emp';
Execute immediate stmt;
Select count(*) into var from emp_dept_v;
Dbms_output. Put_line(var);
End;
Я знаю, что заявления DDL являются авто поручены, но в этом случае я должен добавить совершить заявление после того, как выполнить немедленное заявление для решения этого вопроса.
Я в порядке. Но не могли бы вы дать некоторые разъяснения, почему они не работают. Я имею в виду, что мы пытаемся получить значение представления после его создания в предыдущей строке. – Satyaki
@Satyaki Как я уже упоминал, PL/SQL даже не «компилирует», когда выбранная таблица не существует. Любой SQL внутри строки «EXECUTE немедленный» будет проигнорирован во время компиляции. Только при успешной компиляции SQL в вашем выполнении немедленно будет выполнен. –
Спасибо за это. Так почему это работает, когда я добавляю фиксацию кода после выполнения немедленного действия? – Satyaki