[20140529]建立视图问题.txt

[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下"工作正常",所以浪费了大量时间查找问题,我业务上的视图更长,字段更多,导致当时定位
--浪费了大量时间。

请使用浏览器的分享功能分享到微信等