中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 数据库开发 > 数据库综合
让你的应用程序不再对数据库的改动“感冒”(二)
作者:未知 时间:2003-08-01 12:12 出处:Blog 责编:chinaitpower
              摘要:暂无

原著作者:Jim Czuprynski

使用联接视图实现复杂的需求

使用一个联接的视图把前面的例子带到更高的层次:允许我们的应用访问多个表的信息。扩展前面的例子:

DROP VIEW hr.bv_employees;
CREATE OR REPLACE VIEW hr.bv_employees (
empid, 
fname, 
lname,
email,
hire_date,
job_id,
jobtitle,
deptname) 
 AS
SELECT
    e.employee_id, 
    e.first_name,
    e.last_name,
    e.email,
    e.hire_date,
    e.job_id,
    j.job_title,
    d.department_name
  FROM 
   hr.employees e,
   hr.jobs j,
   hr.departments d
 WHERE e.job_id = j.job_id
   AND e.department_id = d.department_id
/
DROP PUBLIC SYNONYM employees;
CREATE PUBLIC SYNONYM employees FOR bv_employees;
GRANT SELECT, INSERT, UPDATE, DELETE on hr.bv_employees TO oltprole;
 

记住,当你创建了一个复杂的视图后,ORACLE禁止发出的每句SQL语句中针对基本表的DML操作,哪怕仅针对一个。另外INSERT语句可以应用在视图中的主键保持表(KEY PRESERVED TABLE)。主键保持表就是它的主键或唯一健在视图返回的结果集中也是唯一的。在本例中,就是Employees表。ALL_UPDATABLE_COLUMNS数据字典显示了哪些是可以被更新的。

SQL> SELECT
  2     column_name,
  3     updatable,
  4     insertable,
  5     deletable
  6    FROM all_updatable_columns
  7   WHERE owner = 'HR' AND table_name = 'BV_EMPLOYEES';
 
COLUMN_NAME                    UPD INS DEL
------------------------------ --- --- ---
EMPID                          YES YES YES
FNAME                          YES YES YES
LNAME                          YES YES YES
EMAIL                          YES YES YES
HIRE_DATE                      YES YES YES
JOB_ID                         YES YES YES
JOBTITLE                       NO  NO  NO
DEPTNAME                       NO  NO  NO

 

使用程序包实现功能的包装化和数据存取的标准化

ORACLE程序包的最非凡的功能就是它们的把对数据存取的功能包装成一个数据库对象的能力。我们现在的开发组就是使用程序包的公共属性和方法(包括传统的set 和get这种面向对象的方法)来描述应用程序针对基本视图集的数据库接口需求。

而且,既然程序包的规格定义描述了程序包体的函数和过程的公共接口,那么它就有比传统的存储函数和过程的好处:程序包体可以和程序包分开单独编译。那就意味着,除非签名(函数和存储过程的传入或传出参数和返回参数)发生了变化,否则程序包规格定义是不需要重新编译的。这可以最大限度地降低由于依赖对象而发生的重编译。
关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有