sql存儲(chǔ)過程入門教程

sql存儲(chǔ)過程入門教程

ID:8961076

大?。?14.00 KB

頁數(shù):30頁

時(shí)間:2018-04-13

sql存儲(chǔ)過程入門教程_第1頁
sql存儲(chǔ)過程入門教程_第2頁
sql存儲(chǔ)過程入門教程_第3頁
sql存儲(chǔ)過程入門教程_第4頁
sql存儲(chǔ)過程入門教程_第5頁
資源描述:

《sql存儲(chǔ)過程入門教程》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫。

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

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

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

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

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

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

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

8、ENCRYPTION

9、RECOMPILE,EN

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

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

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