第06章SQLServer編程基礎(chǔ)及存儲(chǔ)過(guò)程_第1頁(yè)
第06章SQLServer編程基礎(chǔ)及存儲(chǔ)過(guò)程_第2頁(yè)
第06章SQLServer編程基礎(chǔ)及存儲(chǔ)過(guò)程_第3頁(yè)
第06章SQLServer編程基礎(chǔ)及存儲(chǔ)過(guò)程_第4頁(yè)
第06章SQLServer編程基礎(chǔ)及存儲(chǔ)過(guò)程_第5頁(yè)
已閱讀5頁(yè),還剩98頁(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、整理ppt整理ppt整理ppt整理ppt整理ppt整理ppt整理ppt整理ppt整理ppt整理ppt整理ppt整理ppt整理ppt整理ppt整理ppt整理ppt整理ppt整理ppt整理ppt整理ppt整理ppt整理ppt整理ppt整理ppt整理ppt整理ppt整理ppt整理ppt整理ppt整理ppt整理ppt整理ppt整理ppt整理ppt整理ppt整理ppt整理ppt整理ppt整理ppt整理ppt整理ppt整理ppt整理ppt整理ppt整理ppt整理ppt整理ppt整理ppt整理ppt 客戶/服務(wù)器數(shù)據(jù)庫(kù)與傳統(tǒng)的數(shù)據(jù)庫(kù)結(jié)構(gòu)的一個(gè)很重要的區(qū)別是,在傳統(tǒng)的數(shù)據(jù)庫(kù)中只存放數(shù)據(jù),所有的應(yīng)用程序都在用戶

2、端,都與用戶實(shí)際運(yùn)行的應(yīng)用程序捆綁在一起;而在客戶/服務(wù)器結(jié)構(gòu)的數(shù)據(jù)庫(kù)中,在數(shù)據(jù)庫(kù)中還可以存放程序,即存儲(chǔ)過(guò)程。整理ppt 存儲(chǔ)過(guò)程是事先編好的、存儲(chǔ)在數(shù)據(jù)庫(kù)中的程序,這些程序用來(lái)完成對(duì)數(shù)據(jù)庫(kù)的指定操作。整理ppt系統(tǒng)存儲(chǔ)過(guò)程 SQL Server本身提供了一些存儲(chǔ)過(guò)程,用于管理SQL Server和顯示有關(guān)數(shù)據(jù)庫(kù)和用戶的信息,我們稱之為系統(tǒng)存儲(chǔ)過(guò)程。用戶存儲(chǔ)過(guò)程 用戶也可以編寫自己的存儲(chǔ)過(guò)程,并把它存放在數(shù)據(jù)庫(kù)中。這樣安排的主要目的就是要充分發(fā)揮數(shù)據(jù)庫(kù)服務(wù)器的功能,盡量減少網(wǎng)絡(luò)上的堵塞。整理ppt客戶端應(yīng)用(不使用存儲(chǔ)過(guò)程)客戶端應(yīng)用(使用存儲(chǔ)過(guò)程).Start transaction.IN

3、SERT dataUPDATE dataDELETE dataEnd transaction.Start transaction.Call Stored procedureEnd transaction.DBMSServerDBMSServerProcedure:INSERT dataUPDATE dataDELETE data(a)(b) 不使用存儲(chǔ)不使用存儲(chǔ)過(guò)程時(shí),所有過(guò)程時(shí),所有的數(shù)據(jù)處理都的數(shù)據(jù)處理都在客戶端完成;在客戶端完成;而使用存儲(chǔ)過(guò)而使用存儲(chǔ)過(guò)程時(shí),可以使程時(shí),可以使數(shù)據(jù)處理在服數(shù)據(jù)處理在服務(wù)器端完成。務(wù)器端完成。整理pptCREATE PROCedure procedure_

4、name ; number parameter data_type = default , AS sql_statement s s procedure_name:給出存儲(chǔ)過(guò)程名;:給出存儲(chǔ)過(guò)程名;s s number:對(duì)同名的存儲(chǔ)過(guò)程指定一個(gè)序號(hào);:對(duì)同名的存儲(chǔ)過(guò)程指定一個(gè)序號(hào);s s parameter:給出參數(shù)名;:給出參數(shù)名;s s data_type:指出參數(shù)的數(shù)據(jù)類型;:指出參數(shù)的數(shù)據(jù)類型;s s = default:給出參數(shù)的默認(rèn)值;:給出參數(shù)的默認(rèn)值;s s sql_statement:存儲(chǔ)過(guò)程所要執(zhí)行的:存儲(chǔ)過(guò)程所要執(zhí)行的SQL語(yǔ)句,它可以是一語(yǔ)句,它可以是一組組SQL語(yǔ)句,

5、可以包含流程控制語(yǔ)句等。語(yǔ)句,可以包含流程控制語(yǔ)句等。整理pptCREATE PROCedure sp_getemp;1AS SELECT * FROM 職工職工整理pptCREATE PROCedure sp_getemp;2(salary int)AS SELECT * FROM 職工職工 WHERE 工資工資 salary整理ppt 存儲(chǔ)過(guò)程一般用來(lái)完成數(shù)據(jù)查詢和數(shù)據(jù)處理操作,存儲(chǔ)過(guò)程一般用來(lái)完成數(shù)據(jù)查詢和數(shù)據(jù)處理操作,所以在存儲(chǔ)過(guò)程中不可以使用創(chuàng)建數(shù)據(jù)庫(kù)對(duì)象的語(yǔ)句,所以在存儲(chǔ)過(guò)程中不可以使用創(chuàng)建數(shù)據(jù)庫(kù)對(duì)象的語(yǔ)句,即在存儲(chǔ)過(guò)程中一般不能含有以下語(yǔ)句:即在存儲(chǔ)過(guò)程中一般不能含有以下語(yǔ)句:C

6、REATE TABLECREATE VIEWCREATE DEFAULTCREATE RULECREATE TRIGGERCREATE PROCEDURE整理pptEXECute=|整理pptexecute sp_getemp;2 1240 整理ppt 無(wú)論什么時(shí)候執(zhí)行存儲(chǔ)過(guò)程,總要返回?zé)o論什么時(shí)候執(zhí)行存儲(chǔ)過(guò)程,總要返回一個(gè)結(jié)果碼,用以指示存儲(chǔ)過(guò)程的執(zhí)行狀態(tài)。一個(gè)結(jié)果碼,用以指示存儲(chǔ)過(guò)程的執(zhí)行狀態(tài)。如果存儲(chǔ)過(guò)程執(zhí)行成功,返回的結(jié)果碼是如果存儲(chǔ)過(guò)程執(zhí)行成功,返回的結(jié)果碼是0;如果存儲(chǔ)過(guò)程執(zhí)行失敗,返回的結(jié)果碼一般如果存儲(chǔ)過(guò)程執(zhí)行失敗,返回的結(jié)果碼一般是一個(gè)負(fù)數(shù),它和失敗的類型有關(guān)。我們?cè)谑且粋€(gè)負(fù)

7、數(shù),它和失敗的類型有關(guān)。我們?cè)趧?chuàng)建存儲(chǔ)過(guò)程時(shí),也可以定義自己的狀態(tài)碼創(chuàng)建存儲(chǔ)過(guò)程時(shí),也可以定義自己的狀態(tài)碼和錯(cuò)誤信息。和錯(cuò)誤信息。整理pptCREATE PROCedure sp_getemp;3(salary int =NULL)AS IF salary IS NULLBEGIN PRINT 必須提供一個(gè)數(shù)值作參數(shù)!必須提供一個(gè)數(shù)值作參數(shù)! RETURN 13ENDIF NOT EXISTS (SELECT * FROM 職工職工 WHERE 工資工資 salary)BEGIN PRINT 沒(méi)有滿足條件的記錄!沒(méi)有滿足條件的記錄! RETURN -103ENDSELECT * FROM 職工

8、職工 WHERE 工資工資 salaryRETURN 0例:帶參數(shù)和返回狀態(tài)值的存儲(chǔ)過(guò)程。例:帶參數(shù)和返回狀態(tài)值的存儲(chǔ)過(guò)程。整理ppt例:執(zhí)行以上存儲(chǔ)過(guò)程。例:執(zhí)行以上存儲(chǔ)過(guò)程。DECLARE status intEXECUTE status=sp_getemp;3 1200print status整理ppt整理ppt 存儲(chǔ)過(guò)程是客戶/服務(wù)器機(jī)制的一個(gè)重要組成部分,如果使用客戶/服務(wù)器機(jī)制的數(shù)據(jù)庫(kù)管理系統(tǒng),但是不理解存儲(chǔ)過(guò)程或沒(méi)有充分利用存儲(chǔ)過(guò)程,那將使客戶/服務(wù)器機(jī)制的功能大打折扣,使系統(tǒng)的整體性能可能降低很多。整理ppt 觸發(fā)器可以看作是一類特殊的存儲(chǔ)過(guò)程,觸發(fā)器可以看作是一類特殊的存儲(chǔ)過(guò)

9、程,它在滿足某個(gè)特定條件時(shí)自動(dòng)觸發(fā)執(zhí)行。它在滿足某個(gè)特定條件時(shí)自動(dòng)觸發(fā)執(zhí)行。 觸發(fā)器是為表上的更新、插入、刪除操觸發(fā)器是為表上的更新、插入、刪除操作定義的,也就是說(shuō)當(dāng)表上發(fā)生更新、插入作定義的,也就是說(shuō)當(dāng)表上發(fā)生更新、插入或刪除操作時(shí)觸發(fā)器將執(zhí)行?;騽h除操作時(shí)觸發(fā)器將執(zhí)行。整理ppt 1. 觸發(fā)器可以通過(guò)級(jí)聯(lián)的方式對(duì)相關(guān)的表觸發(fā)器可以通過(guò)級(jí)聯(lián)的方式對(duì)相關(guān)的表進(jìn)行修改。比如,對(duì)父表的修改,可以引起對(duì)進(jìn)行修改。比如,對(duì)父表的修改,可以引起對(duì)子孫表的一系列修改,從而保證數(shù)據(jù)的一致性子孫表的一系列修改,從而保證數(shù)據(jù)的一致性和完整性。和完整性。 2. 觸發(fā)器可以禁止或撤消違反參照完整性觸發(fā)器可以禁止或撤

10、消違反參照完整性的修改。的修改。 3. 觸發(fā)器可以強(qiáng)制比用觸發(fā)器可以強(qiáng)制比用CHECK約束定義約束定義更加復(fù)雜的限制。更加復(fù)雜的限制。整理ppt整理pptCREATE TRIGGER trigger_nameON tableFOR INSERT | UPDATE | DELETE AS IF UPDATE(column) AND | OR UPDATE(column)sql_statements s trigger_name:給出了觸發(fā)器的名稱;:給出了觸發(fā)器的名稱;s s table:說(shuō)明了定義觸發(fā)器的表或視圖;:說(shuō)明了定義觸發(fā)器的表或視圖;s s FOR INSERT | UPDATE |

11、 DELETE :說(shuō)明了激活觸發(fā)器的數(shù)據(jù)操作語(yǔ)句;:說(shuō)明了激活觸發(fā)器的數(shù)據(jù)操作語(yǔ)句;s s IF UPDATE(column):對(duì)應(yīng)于:對(duì)應(yīng)于UPDATE類觸發(fā)器,說(shuō)明如果更新某(些)列類觸發(fā)器,說(shuō)明如果更新某(些)列則做如何處理;則做如何處理;s s sql_statement:觸發(fā)器所要執(zhí)行的:觸發(fā)器所要執(zhí)行的SQL語(yǔ)句,它可以是一組語(yǔ)句,它可以是一組SQL語(yǔ)句,可以包語(yǔ)句,可以包含流程控制語(yǔ)句等。含流程控制語(yǔ)句等。整理pptCREATE TRIGGER wh_triggerON 倉(cāng)庫(kù)倉(cāng)庫(kù)FOR INSERT AS PRINT 插入了一個(gè)倉(cāng)庫(kù)元組插入了一個(gè)倉(cāng)庫(kù)元組整理ppt為觸發(fā)器運(yùn)行而自

12、動(dòng)派生的兩個(gè)視圖:為觸發(fā)器運(yùn)行而自動(dòng)派生的兩個(gè)視圖:inserted存放剛插入的新記錄存放剛插入的新記錄deleted存放剛刪除的舊記錄存放剛刪除的舊記錄整理ppt 刪除類觸發(fā)器就是當(dāng)表上發(fā)生刪除操作時(shí)刪除類觸發(fā)器就是當(dāng)表上發(fā)生刪除操作時(shí)所觸發(fā)執(zhí)行的程序。所觸發(fā)執(zhí)行的程序。整理pptCREATE TRIGGER w_del_triggerON 倉(cāng)庫(kù)倉(cāng)庫(kù) FOR DELETEASUPDATE 職工職工SET 倉(cāng)庫(kù)號(hào)倉(cāng)庫(kù)號(hào)=NULLWHERE 倉(cāng)庫(kù)號(hào)倉(cāng)庫(kù)號(hào) = (SELECT 倉(cāng)庫(kù)號(hào)倉(cāng)庫(kù)號(hào) FROM deleted)整理ppt 插入類觸發(fā)器就是當(dāng)表上發(fā)生插入插入類觸發(fā)器就是當(dāng)表上發(fā)生插入操作時(shí)所觸

13、發(fā)執(zhí)行的程序。操作時(shí)所觸發(fā)執(zhí)行的程序。整理pptCREATE TRIGGER e_ins_triggerON 職工 FOR INSERTASIF (SELECT COUNT(*) FROM 倉(cāng)庫(kù) w , inserted i WHERE w.倉(cāng)庫(kù)號(hào) = i.倉(cāng)庫(kù)號(hào)) = 0BEGIN RAISERROR (非法倉(cāng)庫(kù)號(hào)!,1,1) ROLLBACK TRANSACTIONEND整理ppt 更新類觸發(fā)器就是當(dāng)表上發(fā)生更新操作時(shí)更新類觸發(fā)器就是當(dāng)表上發(fā)生更新操作時(shí)所觸發(fā)執(zhí)行的程序。所觸發(fā)執(zhí)行的程序。整理ppt整理pptCREATE TRIGGER e_upd_triggerON 職工職工 FOR UPDATEASDECLARE wh_no CHAR(4)IF UPDATE(倉(cāng)庫(kù)號(hào)倉(cāng)庫(kù)號(hào)) BEGIN IF (SELECT COUNT(*) FROM 倉(cāng)庫(kù)倉(cāng)庫(kù) w , inserted i WHERE w.倉(cāng)庫(kù)號(hào)倉(cāng)庫(kù)號(hào) = i.倉(cāng)庫(kù)號(hào)倉(cāng)庫(kù)號(hào)) = 0 BEGIN RAISERROR (非法倉(cāng)庫(kù)號(hào)!非法倉(cāng)庫(kù)號(hào)!, 16, 1) ROLLBACK TRANSACTION END ELSE BEGIN SELECT wh_no = 倉(cāng)庫(kù)號(hào)倉(cāng)庫(kù)號(hào) FROM inserted IF wh_no = WH2 UPDATE 職工職工 SET 工資工資 = 工資工資*1.10 WHERE 職工號(hào)職

溫馨提示

  • 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)論