我在Oracle数据库中执行了以下代码,但遇到了视图名称不存在的错误。任何人都可以看一下吗?
COLOR_ORDER
我知道DDL语句是自动提交的,但在这种情况下,我必须在execute immediate语句之后添加一个commit语句来解决问题。
答案 0 :(得分:5)
您得到的是 编译 错误。 PL/SQL
将在执行之前进行编译。因此,在编译期间,您尝试SELECT
的表将无法使用。因而错误。仅当视图名称已存在时,才会起作用。试试你的select
也是动态的。
Declare
Stmt varchar2(2000);
Var number;
Begin
Stmt:='create or replace view emp_dept_v as select * from emp';
Execute immediate stmt;
Stmt:='Select count(*) from emp_dept_v';
Execute immediate stmt into var;
Dbms_output. Put_line(var);
End;
/
顺便说一下,DDLs
不需要COMMIT
;