1
我在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语句是自动提交的,但在这种情况下,我必须在执行immediate语句后添加一个提交语句来解决问题。
我很好走。但是,请您澄清一下为什么它不起作用。我的意思是我们尝试在上一行创建后检索视图的值。 – Satyaki
@Satyaki正如我所提到的,当你选择的表不存在时,PL/SQL甚至不会“编译”。在EXECUTE immediate字符串中的任何SQL在编译期间都将被忽略。只有在编译成功后,执行立即执行的SQL才会真正执行。 –
谢谢你。那么为什么当我在execute immediate之后向代码添加一个提交时它会工作? – Satyaki