sql存儲(chǔ)過(guò)程入門(mén)教程

sql存儲(chǔ)過(guò)程入門(mén)教程

ID:9957630

大?。?14.00 KB

頁(yè)數(shù):30頁(yè)

時(shí)間:2018-05-16

sql存儲(chǔ)過(guò)程入門(mén)教程_第1頁(yè)
sql存儲(chǔ)過(guò)程入門(mén)教程_第2頁(yè)
sql存儲(chǔ)過(guò)程入門(mén)教程_第3頁(yè)
sql存儲(chǔ)過(guò)程入門(mén)教程_第4頁(yè)
sql存儲(chǔ)過(guò)程入門(mén)教程_第5頁(yè)
資源描述:

《sql存儲(chǔ)過(guò)程入門(mén)教程》由會(huì)員上傳分享,免費(fèi)在線(xiàn)閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。

1、1.sql存儲(chǔ)過(guò)程概述在大型數(shù)據(jù)庫(kù)系統(tǒng)中,存儲(chǔ)過(guò)程和觸發(fā)器具有很重要的作用。無(wú)論是存儲(chǔ)過(guò)程還是觸發(fā)器,都是SQL語(yǔ)句和流程控制語(yǔ)句的集合。就本質(zhì)而言,觸發(fā)器也是一種存儲(chǔ)過(guò)程。存儲(chǔ)過(guò)程在運(yùn)算時(shí)生成執(zhí)行方式,所以,以后對(duì)其再運(yùn)行時(shí)其執(zhí)行速度很快。SQLServer2000不僅提供了用戶(hù)自定義存儲(chǔ)過(guò)程的功能,而且也提供了許多可作為工具使用的系統(tǒng)存儲(chǔ)過(guò)程。1.1存儲(chǔ)過(guò)程的概念存儲(chǔ)過(guò)程(StoredProcedure)是一組為了完成特定功能的SQL語(yǔ)句集,經(jīng)編譯后存儲(chǔ)在數(shù)據(jù)庫(kù)。中用戶(hù)通過(guò)指定存儲(chǔ)過(guò)程的名字并給出參數(shù)(如果該存儲(chǔ)過(guò)程帶有參數(shù))來(lái)執(zhí)行它。在SQLServe

2、r的系列版本中存儲(chǔ)過(guò)程分為兩類(lèi):系統(tǒng)提供的存儲(chǔ)過(guò)程和用戶(hù)自定義存儲(chǔ)過(guò)程。系統(tǒng)過(guò)程主要存儲(chǔ)在master數(shù)據(jù)庫(kù)中并以sp_為前綴,并且系統(tǒng)存儲(chǔ)過(guò)程主要是從系統(tǒng)表中獲取信息,從而為系統(tǒng)管理員管理SQLServer提供支持。通過(guò)系統(tǒng)存儲(chǔ)過(guò)程,MSSQLServer中的許多管理性或信息性的活動(dòng)(如了解數(shù)據(jù)庫(kù)對(duì)象、數(shù)據(jù)庫(kù)信息)都可以被順利有效地完成。盡管這些系統(tǒng)存儲(chǔ)過(guò)程被放在master數(shù)據(jù)庫(kù)中,但是仍可以在其它數(shù)據(jù)庫(kù)中對(duì)其進(jìn)行調(diào)用,在調(diào)用時(shí)不必在存儲(chǔ)過(guò)程名前加上數(shù)據(jù)庫(kù)名。而且當(dāng)創(chuàng)建一個(gè)新數(shù)據(jù)庫(kù)時(shí),一些系統(tǒng)存儲(chǔ)過(guò)程會(huì)在新數(shù)據(jù)庫(kù)中被自動(dòng)創(chuàng)建。用戶(hù)自定義存儲(chǔ)過(guò)程是由用戶(hù)創(chuàng)

3、建并能完成某一特定功能(如查詢(xún)用戶(hù)所需數(shù)據(jù)信息)的存儲(chǔ)過(guò)程。在本章中所涉及到的存儲(chǔ)過(guò)程主要是指用戶(hù)自定義存儲(chǔ)過(guò)程。1.2存儲(chǔ)過(guò)程的優(yōu)點(diǎn)當(dāng)利用MSSQLServer創(chuàng)建一個(gè)應(yīng)用程序時(shí),Transaction-SQL是一種主要的編程語(yǔ)言。若運(yùn)用Transaction-SQL來(lái)進(jìn)行編程,有兩種方法。其一是,在本地存儲(chǔ)Transaction-SQL程序,并創(chuàng)建應(yīng)用程序向SQLServer發(fā)送命令來(lái)對(duì)結(jié)果進(jìn)行處理。其二是,可以把部分用Transaction-SQL編寫(xiě)的程序作為存儲(chǔ)過(guò)程存儲(chǔ)在SQLServer中,并創(chuàng)建應(yīng)用程序來(lái)調(diào)用存儲(chǔ)過(guò)程,對(duì)數(shù)據(jù)結(jié)果進(jìn)行處理存儲(chǔ)過(guò)程

4、能夠通過(guò)接收參數(shù)向調(diào)用者返回結(jié)果集,結(jié)果集的格式由調(diào)用者確定;返回狀態(tài)值給調(diào)用者,指明調(diào)用是成功或是失??;包括針對(duì)數(shù)據(jù)庫(kù)的操作語(yǔ)句,并且可以在一個(gè)存儲(chǔ)過(guò)程中調(diào)用另一存儲(chǔ)過(guò)程。我們通常更偏愛(ài)于使用第二種方法,即在SQLServer中使用存儲(chǔ)過(guò)程而不是在客戶(hù)計(jì)算機(jī)上調(diào)用Transaction-SQL編寫(xiě)的一段程序,原因在于存儲(chǔ)過(guò)程具有以下優(yōu)點(diǎn):(1)存儲(chǔ)過(guò)程允許標(biāo)準(zhǔn)組件式編程存儲(chǔ)過(guò)程在被創(chuàng)建以后可以在程序中被多次調(diào)用,而不必重新編寫(xiě)該存儲(chǔ)過(guò)程的SQL語(yǔ)句。而且數(shù)據(jù)庫(kù)專(zhuān)業(yè)人員可隨時(shí)對(duì)存儲(chǔ)過(guò)程進(jìn)行修改,但對(duì)應(yīng)用程序源代碼毫無(wú)影響(因?yàn)閼?yīng)用程序源代碼只包含存儲(chǔ)過(guò)程的調(diào)

5、用語(yǔ)句),從而極大地提高了程序的可移植性。(2)存儲(chǔ)過(guò)程能夠?qū)崿F(xiàn)較快的執(zhí)行速度如果某一操作包含大量的Transaction-SQL代碼或分別被多次執(zhí)行,那么存儲(chǔ)過(guò)程要比批處理的執(zhí)行速度快很多。因?yàn)榇鎯?chǔ)過(guò)程是預(yù)編譯的,在首次運(yùn)行一個(gè)存儲(chǔ)過(guò)程時(shí),查詢(xún)優(yōu)化器對(duì)其進(jìn)行分析、優(yōu)化,并給出最終被存在系統(tǒng)表中的執(zhí)行計(jì)劃。而批處理的Transaction-SQL語(yǔ)句在每次運(yùn)行時(shí)都要進(jìn)行編譯和優(yōu)化,因此速度相對(duì)要慢一些。(3)存儲(chǔ)過(guò)程能夠減少網(wǎng)絡(luò)流量對(duì)于同一個(gè)針對(duì)數(shù)據(jù)數(shù)據(jù)庫(kù)對(duì)象的操作(如查詢(xún)、修改),如果這一操作所涉及到的Transaction-SQL語(yǔ)句被組織成一存儲(chǔ)過(guò)程,

6、那么當(dāng)在客戶(hù)計(jì)算機(jī)上調(diào)用該存儲(chǔ)過(guò)程時(shí),網(wǎng)絡(luò)中傳送的只是該調(diào)用語(yǔ)句,否則將是多條SQL語(yǔ)句,從而大大增加了網(wǎng)絡(luò)流量,降低網(wǎng)絡(luò)負(fù)載。(4)存儲(chǔ)過(guò)程可被作為一種安全機(jī)制來(lái)充分利用系統(tǒng)管理員通過(guò)對(duì)執(zhí)行某一存儲(chǔ)過(guò)程的權(quán)限進(jìn)行限制,從而能夠?qū)崿F(xiàn)對(duì)相應(yīng)的數(shù)據(jù)訪問(wèn)權(quán)限的限制,避免非授權(quán)用戶(hù)對(duì)數(shù)據(jù)的訪問(wèn),保證數(shù)據(jù)的安全。(我們將在14章“SQLServer的用戶(hù)和安全性管理”中對(duì)存儲(chǔ)過(guò)程的這一應(yīng)用作更為清晰的介紹)注意:存儲(chǔ)過(guò)程雖然既有參數(shù)又有返回值,但是它與函數(shù)不同。存儲(chǔ)過(guò)程的返回值只是指明執(zhí)行是否成功,并且它不能像函數(shù)那樣被直接調(diào)用,也就是在調(diào)用存儲(chǔ)過(guò)程時(shí),在存儲(chǔ)過(guò)程名字

7、前一定要有EXEC保留字。2.SQL存儲(chǔ)過(guò)程創(chuàng)建創(chuàng)建存儲(chǔ)過(guò)程,存儲(chǔ)過(guò)程是保存起來(lái)的可以接受和返回用戶(hù)提供的參數(shù)的Transact-SQL語(yǔ)句的集合??梢詣?chuàng)建一個(gè)過(guò)程供永久使用,或在一個(gè)會(huì)話(huà)中臨時(shí)使用(局部臨時(shí)過(guò)程),或在所有會(huì)話(huà)中臨時(shí)使用(全局臨時(shí)過(guò)程)。也可以創(chuàng)建在Microsoft?SQLServer?啟動(dòng)時(shí)自動(dòng)運(yùn)行的存儲(chǔ)過(guò)程。2.1語(yǔ)法CREATEPROC[EDURE]procedure_name[;number][{@parameterdata_type}[VARYING][=default][OUTPUT]][,...n][WITH{RECOMPI

8、LE

9、ENCRYPTION

10、RECOMPILE,EN

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫(huà)的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無(wú)此問(wèn)題,請(qǐng)放心下載。
2. 本文檔由用戶(hù)上傳,版權(quán)歸屬用戶(hù),天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無(wú)法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶(hù)請(qǐng)聯(lián)系客服處理。