freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

oracle數(shù)據(jù)庫實用教程第三章pl/sql程序設計-資料下載頁

2025-02-12 20:37本頁面
  

【正文】 /SQL 過程已成功完成。 ? 提高數(shù)據(jù)的安全性與完整性 ? 利用安全性的權限來控制那些沒有足夠權限用戶對數(shù)據(jù)庫的間接訪問。通過把相關聯(lián)的表的操作集中到一起,保證對這些相關聯(lián)的表執(zhí)行一致的操作,或者任何操作都不做。 ? 改善操作性能 ? 多個用戶使用同一個 SQL語句時,只需做一次語法分析,只在編譯時進行語法分析,運行時不再重做,可以直接調(diào)用緩存中的編譯代碼。 過程和函數(shù)的優(yōu)點 3. 9 觸發(fā)器 ? 觸發(fā)器是許多關系數(shù)據(jù)庫系統(tǒng)都提供的一項技術。在 oracle系統(tǒng)里,觸發(fā)器類似過程和函數(shù),都有聲明,執(zhí)行和異常處理過程的 PL/SQL塊。 ? 觸發(fā)器在數(shù)據(jù)庫里以獨立的對象存儲,它與存儲過程不同的是存儲過程通過其它程序來啟動運行或直接啟動運行,而觸發(fā)器是由一個事件來啟動運行,觸發(fā)器是當某個事件發(fā)生時自動地隱式運行,并且觸發(fā)器不能接收參數(shù)。所以運行觸發(fā)器就叫觸發(fā)或點火( firing)。 ? 在 Oracle里,觸發(fā)器事件指的是對數(shù)據(jù)庫的表進行的 INSERT、UPDATE及 DELETE操作或?qū)σ晥D進行類似的操作。 ? DML 觸發(fā)器 ? Oracle可以在 DML語句進行觸發(fā),可以在 DML操作前或操作后進行觸發(fā),并且可以對每個行或語句操作上進行觸發(fā)。 ? 替代觸發(fā)器 ? 在 Oracle里,不能直接對由兩個以上的表建立的視圖進行操作,所以給出了替代觸發(fā)器。 ? 系統(tǒng)觸發(fā)器 ? 系統(tǒng)觸發(fā)器是在 Oracle數(shù)據(jù)庫系統(tǒng)的事件中進行觸發(fā),如 Oracle系統(tǒng)的啟動與關閉等。 ? 管理觸發(fā)器 ? Oracle 提供了顯示觸發(fā)器信息、禁止觸發(fā)器 和激活觸發(fā)器等功能。 觸發(fā)器類型 ? 創(chuàng)建觸發(fā)器的一般語法是: CREATE [ OR REPLACE]TRIGGER 觸發(fā)器名 [ BEFORE|AFTER ] event ON table_reference [ FOR EACH ROW [WHEN trigger_condition] ] trigger_body。 DML觸發(fā)器 ? 建立 BEFORE語句觸發(fā)器 ? 【例 3 30】 建立一個行級觸發(fā)器,當選課表被刪除一條記錄時,把被刪除記錄寫到選課表刪除日志表中去。 ? ( 1)首先創(chuàng)建一個日志表 SQL create table SC_his( 2 Sno char(8) , 3 Cno char(3), 4 Grade number(3))。 表已創(chuàng)建。 ? ( 2)創(chuàng)建一個行級觸發(fā)器 。 SQL create or replace trigger 2 before delete on for each row 3 begin 4 將修改前數(shù)據(jù)插入到日志記錄表 del_emp, 以供監(jiān)督使用。 5 insert into sc_his( sno,o,grade) 6 values( :, :, :)。 6 end。 8 / ? ( 3)測試: SQL delete sc 2 where stu_no=39。2023610239。 and cou_no=39。a0339。 已刪除 1 行。 SQL select * from sc_his。 SNO CNO GRADE 20236102 a03 89 ? 在行級觸發(fā)器中,在列名前加上 :old標識符標識該列變化前的值,加上 :new標識符標識變化后的值。 ? 使用條件謂詞 ? ORACLE 提供三個參數(shù) INSERTING, UPDATEING,DELETING 用于判斷觸發(fā)了哪些操作。謂詞行為如下: ? INSERTING:如果觸發(fā)語句是 INSERT 語句,則為TRUE,否則為 FALSE ? UPDATING:如果觸發(fā)語句是 UPDATE語句,則為TRUE,否則為 FALSE ? DELETING:如果觸發(fā)語句是 DELETE 語句,則為TRUE,否則為 FALSE ? 【例 3 31】 創(chuàng)建一個包含多個觸發(fā)器事件的觸發(fā)器,禁止工作人員在星期六及星期日插入、刪除或更改雇員的信息。 SQL create or replace trigger tri_emp 2 before insert or update or delete on emp 3 begin 4 if to_char(sysdate,39。DY39。,39。nls_date_language=AMERICAN39。) IN (39。SAT39。,39。SUN39。) then 5 case 6 when inserting then 7 raise_application_error(20231,39。不能在休息日增加雇員 39。)。 8 when updating then 9 raise_application_error(20231,39。不能在休息日更新雇員 39。)。 10 when deleting then 11 raise_application_error(20231,39。不能在休息日更新雇員 39。)。 12 end case。 13 end if。 14 end。 15 / ? 建立 AFTER語句觸發(fā)器 ? 參照完整性是指若兩個表之間具有主從關系,當刪除主表數(shù)據(jù)時,必須確保相關的從表數(shù)據(jù)已經(jīng)被刪除; ? 當修改主表的主鍵列數(shù)據(jù)時,必須確保相關從表數(shù)據(jù)已經(jīng)被修改。為了實現(xiàn)聯(lián)級刪除,可以在定義外部鍵約束時指定 on delete cascade關鍵字。 SQL create table SC1( 2 Stu_no char(8) , 3 Cou_no char(3), 4 Grade number(3), 5 CONSTRAINT pk_sc1 PRIMARY KEY (Stu_no,Cou_no), 6 foreign key(Stu_no) references Student(Stu_no) 7 on delete cascade, 8 foreign key(Cou_no) references Course(Cou_no) 9 on delete cascade, 10 check ((grade is null) or (grade between 0 and 100)))。 表已創(chuàng)建。 ? 若刪除學生主表中學號為’ 20236101’,則從表 SC1中相關的數(shù)據(jù)也被刪除。 SQL delete from student where stu_no=39。2023610139。 ? 使用約束不能實現(xiàn)級聯(lián)更新,此時可以使用觸發(fā)器增強參照完整性約束。 ? 【例 332】當 DEPT表的 deptno發(fā)生變化時, EMP表的相關行也要跟著進行適當?shù)男薷摹? SQL create or replace trigger update_pno 2 after update of deptno on dept 3 for each row 4 begin 5 update emp 6 set =: 7 where =:。 8 end。 9 / 小結(jié) ? PL/SQL程序由三個塊組成 , 包括聲明部分 、 執(zhí)行部分 、 異常處理部分 。 ? 當編寫 P L / S Q L 應用程序時 , 只能直接嵌入SELECT語句 、 DML語句和事務控制語句 , 不能直接嵌入 DDL語句和 DCL語句 。 ? PL/SQL支持條件分支語句 ( IF, CASE) 、 循環(huán)語句 ( LOOP) 和順序語句 ( GOTO, NULL) 。 ? 為了讓 PL/SQL中變量的類型和數(shù)據(jù)表中的字段的數(shù)據(jù)類型一致 , Oracle 9i提供了 %type定義方法 。 ? PL/SQL 集合類型類似于高級語言數(shù)組的一種復合數(shù)據(jù)類型 , 集合類型包括索引表 ( PL/SQL 表 ) 、嵌套表和變長數(shù)組等三種類型 。 ? 異常情況處理 (EXCEPTION)是用來處理正常執(zhí)行過程中未預料的事件 , 包括預定義的錯誤和自定義錯誤 。 PL/SQL程序塊一旦產(chǎn)生異常而沒有指出如何處理時 , 程序就會自動終止 。 有兩種類型的異常情態(tài):用戶定義 (user_define) 和預定義 ( predefined )。 ? 對于數(shù)據(jù)操縱語句和單行 SELECT INTO語句來說 ,Oracle 會為它們分配隱含游標 。 ? Oracle編寫的程序一般分為存儲過程和函數(shù) , 都存放在 Oracle數(shù)據(jù)庫字典中 。 ? 存儲過程是用 PL/SQL語言編寫的能完成一定處理功能的程序 , 函數(shù)是一個獨有的對象 , 它也是由PL/SQL語句編寫而成 , 但函數(shù)必須返回某些值 ,而存儲過程可以不返回任何值 。 ? 觸發(fā)器在數(shù)據(jù)庫里以獨立的對象存儲 , 它與存儲過程不同的是 , 存儲過程通過其它程序來啟動運行或直接啟動運行 , 而觸發(fā)器是由一個事件來啟動運行 。 即觸發(fā)器是當某個事件發(fā)生時自動地隱式運行 , 觸發(fā)器不能接收參數(shù) 。 ? 在 Oracle里 , 觸發(fā)器事件指的是對數(shù)據(jù)庫的表進行的 INSERT、 UPDATE及 DELETE操作或?qū)σ晥D進行類似的操作 。 習題 演講完畢,謝謝觀看!
點擊復制文檔內(nèi)容
黨政相關相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1