讓你的應用程式不再對資料庫的改動「感冒」 二

2021-04-17 07:48:26 字數 2354 閱讀 5446

使用聯接檢視實現複雜的需求

使用乙個聯接的檢視把前面的例子帶到更高的層次:允許我們的應用訪問多個表的資訊。擴充套件前面的例子:

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

2column_name,

3updatable,

4insertable,

5deletable

6from all_updatable_columns

7where owner = 'hr' and table_name = 'bv_employees';

column_nameupd ins del

------------------------------ --- --- ---

empidyes yes yes

fnameyes yes yes

lnameyes yes yes

emailyes yes yes

hire_dateyes yes yes

job_idyes yes yes

jobtitlenonono

deptnamenonono

使用程式包實現功能的包裝化和資料訪問的標準化

oracle程式包的最非凡的功能就是它們的把對資料訪問的功能包裝成乙個資料庫物件的能力。我們現在的開發組就是使用程式包的公共屬性和方法(包括傳統的set 和get這種物件導向的方法)來描述應用程式針對基本檢視集的資料庫介面需求。

而且,既然程式包的規格定義描述了程式包體的函式和過程的公共介面,那麼它就有比傳統的儲存函式和過程的好處:程式包體可以和程式包分開單獨編譯。那就意味著,除非簽名(函式和儲存過程的傳入或傳出引數和返回引數)發生了變化,否則程式包規格定義是不需要重新編譯的。這可以最大限度地降低由於依賴物件而發生的重編譯。

讓你的應用程式不再對的改動「感冒」 二

使用聯接檢視實現複雜的需求 使用乙個聯接的檢視把前面的例子帶到更高的層次 允許我們的應用訪問多個表的資訊。擴充套件前面的例子 dropviewhr.bv employees createorreplaceviewhr.bv employees empid,fname,lname,email,hire...

C 開發資料庫應用程式

簡單性 靈活性 而且,visual c 提供的開發環境可以使開發者根據自己的需要設計應用順序的介面和功能。visual c 提供了豐富的類庫和方法,可以使開發者根據自己的應用特點進行選擇。訪問速度快 visual c 提供了新的訪問技術 ole db 和 ado ole db 和 ado 都是基於 ...

應用程式和資料庫連線

資料庫 資料庫的定義有好多,我們可以把他理解為是乙個存放資料的倉庫,而這些資料之間有存在聯絡。資料庫模式 根據資料庫的結構可以講資料庫分為三個模式 層次資料庫,網狀資料庫,和關聯式資料庫。前兩種資料模式沒有涉及,我只說關聯式資料庫。關聯式資料庫 乙個資料庫可以有n多表,這些表跟表之間通過某個字段可以...