频道栏目
读书频道 > 数据库 > Oracle > Oracle入门很简单
11.2.6 强制创建视图
2012-08-01 15:17:59     我来说两句
收藏   我要投稿

本文所属图书 > Oracle入门很简单

本书从初学者的角度出发,由浅入深、循序渐进地介绍了Oracle数据库开发的基础知识。书中对数据库基本理论及其在数据库开发过程中的应用也有详细介绍。书中也列举了大量示例,可供读者演练。本书共分5篇。第1篇介...  立即去当当网订购
归根结底,视图数据的来源是基础数据表。有时,视图的基础表尚未创建,但是仍然希望创建基于不存在的数据表的视图。
 
【示例11-10】 例如,开发者预期有名为customer的数据表,该表至少包含以下列,如图11-7所示。
 

 
图11-7  customer数据表
现需创建一个名为vw_customer的视图,该视图仅包含以下列customer_id、customer_code、customer_name customer_level和contact_telephone。但是,视图创建者无权创建实际的数据表,但又不能等待表的预期创建者的工作。此时,可以使用force选项来强制创建视图。利用force选项强制创建视图的语法如下所示。
create or replace force view视图名称as 查询语句|关系运算
在PL/SQL Developer中强制创建视图vw_customer。
 
SQL> create or replace force view vw_customer as 
  2  select customer_id, customer_code, customer_name, contact_telephone 
  3  from customer; 
  
Warning: View created with compilation errors 
 
其中,force view将创建强制视图,该视图的基础数据表customer并不存在,因此将抛出编译错误。Warning: View created with compilation errors代表,视图已经创建,但是存在编译错误。
 
当然,此时操作视图vw_customer,Oracle将抛出错误提示:
 
SQL> select * from vw_customer; 
  
select * from vw_customer 
  
ORA-04063: view "SYSTEM.VW_CUSTOMER" has errors 
基础表customer一旦被创建,则可以正常使用视图。
 
SQL> create table customer (customer_id number, customer_code varchar2(20),  
 
customer_name varchar2(50), customer_level varchar2(10),
contact_telephone varchar2(20)); 
  
Table created 
 
SQL> select * from vw_customer; 
  
CUSTOMER_ID     CUSTOMER_CODE     CUSTOMER_NAME      CONTACT_TELEPHONE 
-----------     -------------     -------------      ----------------- 
虽然视图查询结果为空,但表明视图已经成功编译,并可以成功使用。
您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:11.2.5 联接视图
下一篇:11.2.7 创建视图约束
相关文章
图文推荐
排行
热门
最新书评
文章
下载
读书
特别推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站