• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: 小 中 大 | 推荐给好友 上一篇 | 下一篇

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

发布: 2007-7-02 11:08 | 作者: admin | 来源: | 查看: 8次 | 进入软件测试论坛讨论

领测软件测试网
原著作者: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这种面向对象的方法)来描述应用程序针对基本视图集的数据库接口需求。
而且,既然程序包的规格定义描述了程序包体的函数和过程的公共接口,那么它就有比传统的存储函数和过程的好处:程序包体可以和程序包分开单独编译。那就意味着,除非签名(函数和存储过程的传入或传出参数和返回参数)发生了变化,否则程序包规格定义是不需要重新编译的。这可以最大限度地降低由于依赖对象而发生的重编译。

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备2023014753号-2
技术支持和业务联系:[email protected] 电话:010-51297073

软件测试 | 领测国际 | ISTQB | ISTQB官网 | TMMi | TMMi认证 | 国际软件测试工程师认证 | 领测软件测试网