国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

讓你的應用程序不再對數據庫的改動"感冒"(二)

2024-07-21 02:08:35
字體:
來源:轉載
供稿:網友



原著作者: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這種面向對象的方法)來描述應用程序針對基本視圖集的數據庫接口需求。
而且,既然程序包的規格定義描述了程序包體的函數和過程的公共接口,那么它就有比傳統的存儲函數和過程的好處:程序包體可以和程序包分開單獨編譯。那就意味著,除非簽名(函數和存儲過程的傳入或傳出參數和返回參數)發生了變化,否則程序包規格定義是不需要重新編譯的。這可以最大限度地降低由于依賴對象而發生的重編譯。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 新竹县| 通州市| 云林县| 黑龙江省| 扎鲁特旗| 内黄县| 新郑市| 无为县| 宝清县| 昭通市| 金华市| 金乡县| 赤壁市| 七台河市| 洪泽县| 石屏县| 商河县| 平罗县| 云浮市| 龙口市| 徐水县| 苗栗市| 临湘市| 新邵县| 广西| 精河县| 八宿县| 呼和浩特市| 红河县| 桦南县| 芮城县| 盐池县| 合肥市| 阜平县| 渑池县| 成安县| 建始县| 伊春市| 景宁| 正阳县| 军事|