[20140529]建立视图问题.txt
--昨天想将在10g下建立的视图移植到11g,遇到一个奇怪的问题,自己做一个记录。
orcl> @ver
BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bi
orcl> create table t ( id number,c1 varchar2(20),c2 varchar2(20));
Table created.
orcl> create or replace force view v_t (id ,c1) as select id ,c1,c2 from t ;
Warning: View created with compilation errors.
orcl> show error
No errors.
--可以发现编译有错,少了1个字段。
orcl> select * from v_t;
select * from v_t
*
ERROR at line 1:
ORA-01730: invalid number of column names specified
orcl> select id,c1 from v_t;
no rows selected
--可以发现如果查询这个视图有问题,只要不设计c2字段,问题消失。很奇怪的是在toad看没有报错。
--在11G下重复测试:
SCOTT@test> @ver
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
SCOTT@test> create table t ( id number,c1 varchar2(20),c2 varchar2(20));
Table created.
SCOTT@test> create or replace force view v_t (id ,c1) as select id ,c1,c2 from t ;
Warning: View created with compilation errors.
SCOTT@test> show error
No errors.
SCOTT@test> select id,c1 from v_t;
select id,c1 from v_t
*
ERROR at line 1:
ORA-04063: view "SCOTT.V_T" has errors
--可以发现在11g下无法使用。因为在10g下"工作正常",所以浪费了大量时间查找问题,我业务上的视图更长,字段更多,导致当时定位
--浪费了大量时间。