转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 数据库 >> 其他 >> 正文
让你的应用程序不再对数据库的改动“感冒”(二)         ★★★★

让你的应用程序不再对数据库的改动“感冒”(二)

作者:闵涛 文章来源:闵涛的学习笔记 点击数:770 更新时间:2009/4/22 23:21:34

原著作者: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这种面向对象的方法)来描述应用程序针对基本视图集的数据库接口需求。

而且,既然程序包的规格定义描述了程序包体的函数和过程的公共接口,那么它就有比传统的存储函数和过程的好处:程序包体可以和程序包分开单独编译。那就意味着,除非签名(函数和存储过程的传入或传出参数和返回参数)发生了变化,否则程序包规格定义是不需要重新编译的。这可以最大限度地降低由于依赖对象而发生的重编译。  


[常用软件]评测:Gmail Beta(二)  [VB.NET程序]走近VB.Net(二) 再谈函数调用
[VB.NET程序]把握VB.NET中的流(Stream) (二)  [Delphi程序]Integer GUID和Comb做主键的效率测试(Delphi+acce…
[网页制作]DreamwaverMX与ASP.NET(二)  [Web开发]XPDL学习与分享 二 XPDL整体结构
[Web开发]ADO.net学习纪录 (二)  [Web开发]Asp.net(vb.net)的Calendar只顯示日,一,二,三...1…
[SyBase](转载)深入Linux网络核心堆栈 (二)  [ORACLE]ORACLE SQL性能优化系列 (二)
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · Sql Server  · MySql
    · Access  · ORACLE
    · SyBase  · 其他
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台