ITPub博客

首页 > 数据库 > 数据库开发技术 > 让你的应用程序不再对数据库的改动“感冒”(二) (转)

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

原创 数据库开发技术 作者:amyz 时间:2007-11-10 19:31:50 0 删除 编辑
让你的应用程序不再对数据库的改动“感冒”(二) (转)[@more@]

原著作者:Mailto:jczuprynski@zerodefectcomputing.com">Jim Czuprynski

使用联接视图实现复杂的需求XML:namespace prefix = o ns = "urn:schemas-microsoft-com:Office:office" />

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

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

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

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10752019/viewspace-981648/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
  • 博文量
    3984
  • 访问量
    7338964