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

正文內(nèi)容

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

2025-02-12 20:37本頁(yè)面
  

【正文】 /SQL 過(guò)程已成功完成。 ? 提高數(shù)據(jù)的安全性與完整性 ? 利用安全性的權(quán)限來(lái)控制那些沒(méi)有足夠權(quán)限用戶對(duì)數(shù)據(jù)庫(kù)的間接訪問(wèn)。通過(guò)把相關(guān)聯(lián)的表的操作集中到一起,保證對(duì)這些相關(guān)聯(lián)的表執(zhí)行一致的操作,或者任何操作都不做。 ? 改善操作性能 ? 多個(gè)用戶使用同一個(gè) SQL語(yǔ)句時(shí),只需做一次語(yǔ)法分析,只在編譯時(shí)進(jìn)行語(yǔ)法分析,運(yùn)行時(shí)不再重做,可以直接調(diào)用緩存中的編譯代碼。 過(guò)程和函數(shù)的優(yōu)點(diǎn) 3. 9 觸發(fā)器 ? 觸發(fā)器是許多關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)都提供的一項(xiàng)技術(shù)。在 oracle系統(tǒng)里,觸發(fā)器類似過(guò)程和函數(shù),都有聲明,執(zhí)行和異常處理過(guò)程的 PL/SQL塊。 ? 觸發(fā)器在數(shù)據(jù)庫(kù)里以獨(dú)立的對(duì)象存儲(chǔ),它與存儲(chǔ)過(guò)程不同的是存儲(chǔ)過(guò)程通過(guò)其它程序來(lái)啟動(dòng)運(yùn)行或直接啟動(dòng)運(yùn)行,而觸發(fā)器是由一個(gè)事件來(lái)啟動(dòng)運(yùn)行,觸發(fā)器是當(dāng)某個(gè)事件發(fā)生時(shí)自動(dòng)地隱式運(yùn)行,并且觸發(fā)器不能接收參數(shù)。所以運(yùn)行觸發(fā)器就叫觸發(fā)或點(diǎn)火( firing)。 ? 在 Oracle里,觸發(fā)器事件指的是對(duì)數(shù)據(jù)庫(kù)的表進(jìn)行的 INSERT、UPDATE及 DELETE操作或?qū)σ晥D進(jìn)行類似的操作。 ? DML 觸發(fā)器 ? Oracle可以在 DML語(yǔ)句進(jìn)行觸發(fā),可以在 DML操作前或操作后進(jìn)行觸發(fā),并且可以對(duì)每個(gè)行或語(yǔ)句操作上進(jìn)行觸發(fā)。 ? 替代觸發(fā)器 ? 在 Oracle里,不能直接對(duì)由兩個(gè)以上的表建立的視圖進(jìn)行操作,所以給出了替代觸發(fā)器。 ? 系統(tǒng)觸發(fā)器 ? 系統(tǒng)觸發(fā)器是在 Oracle數(shù)據(jù)庫(kù)系統(tǒng)的事件中進(jìn)行觸發(fā),如 Oracle系統(tǒng)的啟動(dòng)與關(guān)閉等。 ? 管理觸發(fā)器 ? Oracle 提供了顯示觸發(fā)器信息、禁止觸發(fā)器 和激活觸發(fā)器等功能。 觸發(fā)器類型 ? 創(chuàng)建觸發(fā)器的一般語(yǔ)法是: CREATE [ OR REPLACE]TRIGGER 觸發(fā)器名 [ BEFORE|AFTER ] event ON table_reference [ FOR EACH ROW [WHEN trigger_condition] ] trigger_body。 DML觸發(fā)器 ? 建立 BEFORE語(yǔ)句觸發(fā)器 ? 【例 3 30】 建立一個(gè)行級(jí)觸發(fā)器,當(dāng)選課表被刪除一條記錄時(shí),把被刪除記錄寫(xiě)到選課表刪除日志表中去。 ? ( 1)首先創(chuàng)建一個(gè)日志表 SQL create table SC_his( 2 Sno char(8) , 3 Cno char(3), 4 Grade number(3))。 表已創(chuàng)建。 ? ( 2)創(chuàng)建一個(gè)行級(jí)觸發(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)測(cè)試: 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 ? 在行級(jí)觸發(fā)器中,在列名前加上 :old標(biāo)識(shí)符標(biāo)識(shí)該列變化前的值,加上 :new標(biāo)識(shí)符標(biāo)識(shí)變化后的值。 ? 使用條件謂詞 ? ORACLE 提供三個(gè)參數(shù) INSERTING, UPDATEING,DELETING 用于判斷觸發(fā)了哪些操作。謂詞行為如下: ? INSERTING:如果觸發(fā)語(yǔ)句是 INSERT 語(yǔ)句,則為TRUE,否則為 FALSE ? UPDATING:如果觸發(fā)語(yǔ)句是 UPDATE語(yǔ)句,則為TRUE,否則為 FALSE ? DELETING:如果觸發(fā)語(yǔ)句是 DELETE 語(yǔ)句,則為TRUE,否則為 FALSE ? 【例 3 31】 創(chuàng)建一個(gè)包含多個(gè)觸發(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語(yǔ)句觸發(fā)器 ? 參照完整性是指若兩個(gè)表之間具有主從關(guān)系,當(dāng)刪除主表數(shù)據(jù)時(shí),必須確保相關(guān)的從表數(shù)據(jù)已經(jīng)被刪除; ? 當(dāng)修改主表的主鍵列數(shù)據(jù)時(shí),必須確保相關(guān)從表數(shù)據(jù)已經(jīng)被修改。為了實(shí)現(xiàn)聯(lián)級(jí)刪除,可以在定義外部鍵約束時(shí)指定 on delete cascade關(guān)鍵字。 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)建。 ? 若刪除學(xué)生主表中學(xué)號(hào)為’ 20236101’,則從表 SC1中相關(guān)的數(shù)據(jù)也被刪除。 SQL delete from student where stu_no=39。2023610139。 ? 使用約束不能實(shí)現(xiàn)級(jí)聯(lián)更新,此時(shí)可以使用觸發(fā)器增強(qiáng)參照完整性約束。 ? 【例 332】當(dāng) DEPT表的 deptno發(fā)生變化時(shí), EMP表的相關(guān)行也要跟著進(jìn)行適當(dāng)?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程序由三個(gè)塊組成 , 包括聲明部分 、 執(zhí)行部分 、 異常處理部分 。 ? 當(dāng)編寫(xiě) P L / S Q L 應(yīng)用程序時(shí) , 只能直接嵌入SELECT語(yǔ)句 、 DML語(yǔ)句和事務(wù)控制語(yǔ)句 , 不能直接嵌入 DDL語(yǔ)句和 DCL語(yǔ)句 。 ? PL/SQL支持條件分支語(yǔ)句 ( IF, CASE) 、 循環(huán)語(yǔ)句 ( LOOP) 和順序語(yǔ)句 ( GOTO, NULL) 。 ? 為了讓 PL/SQL中變量的類型和數(shù)據(jù)表中的字段的數(shù)據(jù)類型一致 , Oracle 9i提供了 %type定義方法 。 ? PL/SQL 集合類型類似于高級(jí)語(yǔ)言數(shù)組的一種復(fù)合數(shù)據(jù)類型 , 集合類型包括索引表 ( PL/SQL 表 ) 、嵌套表和變長(zhǎng)數(shù)組等三種類型 。 ? 異常情況處理 (EXCEPTION)是用來(lái)處理正常執(zhí)行過(guò)程中未預(yù)料的事件 , 包括預(yù)定義的錯(cuò)誤和自定義錯(cuò)誤 。 PL/SQL程序塊一旦產(chǎn)生異常而沒(méi)有指出如何處理時(shí) , 程序就會(huì)自動(dòng)終止 。 有兩種類型的異常情態(tài):用戶定義 (user_define) 和預(yù)定義 ( predefined )。 ? 對(duì)于數(shù)據(jù)操縱語(yǔ)句和單行 SELECT INTO語(yǔ)句來(lái)說(shuō) ,Oracle 會(huì)為它們分配隱含游標(biāo) 。 ? Oracle編寫(xiě)的程序一般分為存儲(chǔ)過(guò)程和函數(shù) , 都存放在 Oracle數(shù)據(jù)庫(kù)字典中 。 ? 存儲(chǔ)過(guò)程是用 PL/SQL語(yǔ)言編寫(xiě)的能完成一定處理功能的程序 , 函數(shù)是一個(gè)獨(dú)有的對(duì)象 , 它也是由PL/SQL語(yǔ)句編寫(xiě)而成 , 但函數(shù)必須返回某些值 ,而存儲(chǔ)過(guò)程可以不返回任何值 。 ? 觸發(fā)器在數(shù)據(jù)庫(kù)里以獨(dú)立的對(duì)象存儲(chǔ) , 它與存儲(chǔ)過(guò)程不同的是 , 存儲(chǔ)過(guò)程通過(guò)其它程序來(lái)啟動(dòng)運(yùn)行或直接啟動(dòng)運(yùn)行 , 而觸發(fā)器是由一個(gè)事件來(lái)啟動(dòng)運(yùn)行 。 即觸發(fā)器是當(dāng)某個(gè)事件發(fā)生時(shí)自動(dòng)地隱式運(yùn)行 , 觸發(fā)器不能接收參數(shù) 。 ? 在 Oracle里 , 觸發(fā)器事件指的是對(duì)數(shù)據(jù)庫(kù)的表進(jìn)行的 INSERT、 UPDATE及 DELETE操作或?qū)σ晥D進(jìn)行類似的操作 。 習(xí)題 演講完畢,謝謝觀看!
點(diǎn)擊復(fù)制文檔內(nèi)容
黨政相關(guān)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1