我在Oracle数据库中执行了以下代码,但遇到了视图名称不存在的错误.任何人都可以看一下吗?
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;
Run Code Online (Sandbox Code Playgroud)
我知道DDL语句是自动提交的,但在这种情况下,我必须在execute immediate语句之后添加一个commit语句来解决问题.
你得到的是编译错误.在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;
/
Run Code Online (Sandbox Code Playgroud)
顺便说一句,DDLs不需要COMMIT;
| 归档时间: |
|
| 查看次数: |
1030 次 |
| 最近记录: |