數(shù)據(jù)庫(kù)實(shí)驗(yàn)6觸發(fā)器實(shí)驗(yàn)報(bào)告_第1頁(yè)
數(shù)據(jù)庫(kù)實(shí)驗(yàn)6觸發(fā)器實(shí)驗(yàn)報(bào)告_第2頁(yè)
數(shù)據(jù)庫(kù)實(shí)驗(yàn)6觸發(fā)器實(shí)驗(yàn)報(bào)告_第3頁(yè)
數(shù)據(jù)庫(kù)實(shí)驗(yàn)6觸發(fā)器實(shí)驗(yàn)報(bào)告_第4頁(yè)
數(shù)據(jù)庫(kù)實(shí)驗(yàn)6觸發(fā)器實(shí)驗(yàn)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩5頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、.淮海工學(xué)院計(jì)算機(jī)工程學(xué)院實(shí)驗(yàn)報(bào)告書(shū)課程名: 數(shù)據(jù)庫(kù)原理及應(yīng)用 題 目: 存儲(chǔ)過(guò)程和觸發(fā)器 班 級(jí): 軟件132 學(xué) 號(hào): 2013122907 姓 名: 孫瑩瑩 評(píng)語(yǔ):成績(jī): 指導(dǎo)教師: 批閱時(shí)間: 年 月 日精品.一 目的與要求1. 掌握存儲(chǔ)過(guò)程的創(chuàng)建方法;2. 掌握存儲(chǔ)過(guò)程的執(zhí)行、修改和刪除等操作;3. 掌握觸發(fā)器的創(chuàng)建方法;4. 掌握觸發(fā)器的使用、修改和刪除等相關(guān)內(nèi)容二 實(shí)驗(yàn)內(nèi)容基于前面建立的factory數(shù)據(jù)庫(kù),使用t-sql語(yǔ)句完成如下各小題的功能:1. 創(chuàng)建一個(gè)為worker表添加職工記錄的存儲(chǔ)過(guò)程addworker;2. 創(chuàng)建一個(gè)存儲(chǔ)過(guò)程delworker刪除worker表中指

2、定職工號(hào)的記錄。3. 顯示存儲(chǔ)過(guò)程delworker;4. 刪除存儲(chǔ)過(guò)程addworker和delworker.三 實(shí)驗(yàn)步驟1 .(1)建立存儲(chǔ)過(guò)程use factorygocreate procedure addworker no int=null, name char(10)=null, sex char(2)=null, birthday datetime=null, na char(2)=null, wtime datetime=null, depno int=nullasif no is null or name is null or sex is null or birthday

3、is null or depno is nullbegin print 請(qǐng)重新輸入該職工信息! print 你必須提供職工號(hào)、姓名、性別、出生日期、部門(mén)號(hào) returnendbegin transaction insert into worker values(no,name,sex,birthday,na,wtime,depno) if error0 begin rollback tran return end精品.commit transactionprint 職工+name+的信息成功添加到表worker中(2)驗(yàn)證存儲(chǔ)過(guò)程use factorygoaddworker 20,陳立,女,5

4、5/03/08,否,75/10/10,4goselect 職工號(hào),姓名,性別,黨員否 from workergo2.(1)建立存儲(chǔ)程序use factorygocreate procedure delworker no int=nullasif no is nullbegin print 必須輸入職工號(hào)! returnendbegin transaction delete from worker where 職工號(hào)=no if error0 begin rollback tran return endcommit transactionprint 成功刪除職工號(hào)為+cast(no as cha

5、r(2)+的職工記錄執(zhí)行下列語(yǔ)句,可驗(yàn)證存儲(chǔ)過(guò)程的正確性:use factorygodelworker 20goselect 職工號(hào),姓名,性別,黨員否 from workergo3.use factorygoexec sp_helptext delworkergo4.use factorygoif exists (select name from sysobjects精品. where name = addworker and type =p) drop procedure addworkergoif exists (select name from sysobjects where nam

6、e = delworker and type =p) drop procedure delworkergo5.建立觸發(fā)器depart_update的程序如下:use factorygoif exists (select name from sysobjects where type=tr and name=depart_update) drop trigger depart_updategocreate trigger depart_update on depart after update as declare olddepno int,newdepno int select olddepn

7、o=部門(mén)號(hào)from deleted select newdepno=部門(mén)號(hào)from insertedupdate worker set 部門(mén)號(hào)=newdepnowhere 部門(mén)號(hào)=olddepnogo執(zhí)行下列語(yǔ)句,可驗(yàn)證存儲(chǔ)過(guò)程的正確性:use factorygoprint 將部門(mén)號(hào)改為update departset 部門(mén)號(hào)=105where 部門(mén)號(hào)=101goselect 職工號(hào),姓名,部門(mén)號(hào)from workergoprint 將部門(mén)號(hào)改為update departset 部門(mén)號(hào)=101where 部門(mén)號(hào)=105goselect 職工號(hào),姓名,部門(mén)號(hào)from workergo6.建立觸發(fā)

8、器worker_delete的程序如下:use factorygoif exists (select name from sysobjects精品. where type=tr and name=worker_delete) drop trigger worker_deletegocreate trigger worker_delete on worker for delete as declare no int select no=職工號(hào)from deleteddelete from salary where 職工號(hào)=nogo執(zhí)行下列語(yǔ)句,可驗(yàn)證存儲(chǔ)過(guò)程的正確性:use factorygop

9、rint 刪除前的工資記錄select * from salarygodelete from workerwhere 職工號(hào)=15goprint 刪除職工號(hào)為的職工記錄后的工資記錄select * from salarygo7.刪除觸發(fā)器depart_update的程序如下:use factorygodrop trigger depart_updatego8.刪除觸發(fā)器worker_delete的程序如下:use factorygodrop trigger worker_deletego四 測(cè)試數(shù)據(jù)與實(shí)驗(yàn)結(jié)果第1題圖第2題圖精品.第3題圖 精品.第5題圖精品.第6題圖五結(jié)果分析與實(shí)驗(yàn)體會(huì)cre

10、ate procedure語(yǔ)句允許創(chuàng)建、編譯并在ms-sql server上保存存儲(chǔ)過(guò)程。在默認(rèn)情況下,只有數(shù)據(jù)庫(kù)擁有者(dbo)具有對(duì)數(shù)據(jù)庫(kù)的create procedure訪問(wèn)權(quán)。但是,dbo可執(zhí)行以下形式的grant語(yǔ)句向由語(yǔ)句中的所標(biāo)識(shí)的用戶id授予create procedure訪問(wèn)權(quán): grant create procedure create procedure語(yǔ)句的句法如下: create procedure ; varying= output,nwith recompile|encryption|recompile,encryptionfor replicationas 其中

11、:是存儲(chǔ)過(guò)程的名稱,名稱至多可有128個(gè)字符。允許創(chuàng)建多個(gè)有相同名稱的存儲(chǔ)過(guò)程。通過(guò)在執(zhí)行命令中包括版本號(hào)從而執(zhí)行指定版本的存儲(chǔ)過(guò)程,如下面的語(yǔ)句所示:exec usp_proc;2。如果調(diào)用存儲(chǔ)過(guò)程時(shí)沒(méi)有指定版本號(hào),dbms將執(zhí)行具有相同名稱的存儲(chǔ)過(guò)程組中最高版本號(hào)的存儲(chǔ)過(guò)程。通過(guò)在drop語(yǔ)句中包括版本號(hào),如drop procedure usp_proc;2所示,可以刪除特定版本號(hào)的存儲(chǔ)過(guò)程,或者忽略版本號(hào),如drop procedure usp_proc從而一次刪除存儲(chǔ)過(guò)程的所有版本。是可用作存儲(chǔ)過(guò)程中的變量的參數(shù)名。每個(gè)參數(shù)的值必須在存儲(chǔ)過(guò)程調(diào)用中提供或者作為create proced

12、ure語(yǔ)句的一部分設(shè)置為缺省值。雖然參數(shù)可用作存儲(chǔ)過(guò)程中的變量名,但參數(shù)不能用作列名、表名或是其他數(shù)據(jù)庫(kù)對(duì)象的名稱。精品.是參數(shù)的數(shù)據(jù)類(lèi)型。參數(shù)可以是任何合法的sql數(shù)據(jù)類(lèi)型(包括text、ntext和image)或用戶定義的數(shù)據(jù)類(lèi)型。如果參數(shù)是cursor數(shù)據(jù)類(lèi)型,該參數(shù)還必須被指定為varying和output。varying僅對(duì)數(shù)據(jù)類(lèi)型為cursor的參數(shù)才是合法的。指明該參數(shù)將包括內(nèi)容會(huì)變化的結(jié)果集,其內(nèi)容由存儲(chǔ)過(guò)程中的語(yǔ)句動(dòng)態(tài)地構(gòu)成。是參數(shù)的默認(rèn)值。如果指定,則過(guò)程可在不指定參數(shù)的情況下執(zhí)行。output指明參數(shù)在存儲(chǔ)過(guò)程中可以變化,而且修改后的值可返回給主調(diào)過(guò)程。,n指明creat

13、e procedure語(yǔ)句可有多達(dá)2100個(gè)參數(shù)。recompile每當(dāng)存儲(chǔ)過(guò)程被調(diào)用時(shí)告訴ms-sql server都要進(jìn)行編譯(也就是生成新的執(zhí)行計(jì)劃)。如果沒(méi)有此選項(xiàng)項(xiàng),dbms在執(zhí)行create procedure語(yǔ)句時(shí)編碼存儲(chǔ)過(guò)程,每次調(diào)用時(shí)都使用同一執(zhí)行計(jì)劃。encryption告訴ms-sql server加密syscomments表中存儲(chǔ)過(guò)程條目的文本,以防止用戶查看編譯后的存儲(chǔ)過(guò)程中的語(yǔ)句。指定此選項(xiàng)還可防止存儲(chǔ)過(guò)程被除數(shù)作為ms-sql server的復(fù)制過(guò)程而分開(kāi)。由于創(chuàng)建的觸發(fā)器在條件成立時(shí)會(huì)自動(dòng)被調(diào)用,可能影響后面示例的執(zhí)行,所以當(dāng)一個(gè)觸發(fā)器不再需要時(shí),需將其禁用,禁用trigop觸發(fā)器的操作是:選中factory表節(jié)點(diǎn),展開(kāi)下方的觸發(fā)器節(jié)點(diǎn),右擊trigop,在出現(xiàn)的快捷菜單中選擇禁用命令。如要重新啟動(dòng)已禁用的觸發(fā)器,在這里選擇啟用命令即可啟

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論