版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
存儲(chǔ)過(guò)程
9.1存儲(chǔ)過(guò)程的基本概念
在使用Transact-SQL語(yǔ)言編程的過(guò)程中,可以將某些多次調(diào)用以實(shí)現(xiàn)某個(gè)特定任務(wù)的代碼段編寫(xiě)成一個(gè)過(guò)程,將其保存在數(shù)據(jù)庫(kù)中,并由SQLServer服務(wù)器通過(guò)過(guò)程名調(diào)用它們,這些過(guò)程就叫做存儲(chǔ)過(guò)程。存儲(chǔ)過(guò)程分為系統(tǒng)存儲(chǔ)過(guò)程和用戶自定義的存儲(chǔ)過(guò)程。系統(tǒng)存儲(chǔ)過(guò)程由
SQLServer2000提供,用戶可以直接使用。用戶自定義存儲(chǔ)過(guò)程需要用戶自己創(chuàng)建和維護(hù)。系統(tǒng)存儲(chǔ)過(guò)程使用“sp_”作為前綴。
存儲(chǔ)過(guò)程的優(yōu)點(diǎn):可以在單個(gè)存儲(chǔ)過(guò)程中執(zhí)行一系列
SQL語(yǔ)句。
可以從自己的存儲(chǔ)過(guò)程內(nèi)引用其它存儲(chǔ)過(guò)程,這可以簡(jiǎn)化一系列復(fù)雜語(yǔ)句。
存儲(chǔ)過(guò)程在創(chuàng)建時(shí)即在服務(wù)器上進(jìn)行編譯,所以執(zhí)行起來(lái)比單個(gè)
SQL語(yǔ)句快。
9.2創(chuàng)建存儲(chǔ)過(guò)程
在SQL-Server中,可以使用三種方法創(chuàng)建存儲(chǔ)過(guò)程:使用向?qū)?chuàng)建存儲(chǔ)過(guò)程。
使用SQL-Server企業(yè)管理器創(chuàng)建存儲(chǔ)過(guò)程。
使用Transact-SQL語(yǔ)句中的CreateProcedure命令創(chuàng)建存儲(chǔ)過(guò)程。
默認(rèn)情況下,創(chuàng)建存儲(chǔ)過(guò)程的許可權(quán)歸屬數(shù)據(jù)庫(kù)的所有者,數(shù)據(jù)庫(kù)的所有者可以授權(quán)給其他用戶。9.2.1使用向?qū)?chuàng)建存儲(chǔ)過(guò)程
(1)在企業(yè)管理器中選中某個(gè)SQL-Server服務(wù)器中的數(shù)據(jù)庫(kù),這里選中sales數(shù)據(jù)庫(kù)。選擇工具菜單中的“向?qū)А辈藛雾?xiàng),系統(tǒng)會(huì)彈出“選擇向?qū)А睂?duì)話框。選中“創(chuàng)建存儲(chǔ)過(guò)程向?qū)А边x項(xiàng)。(2)單擊“確定”按鈕,出現(xiàn)“歡迎使用創(chuàng)建存儲(chǔ)過(guò)程向?qū)А睂?duì)話框。(3)單擊“下一步”按鈕,出現(xiàn)“選擇數(shù)據(jù)庫(kù)”對(duì)話框,如圖9-3所示。該對(duì)話框用于選擇創(chuàng)建存儲(chǔ)過(guò)程中使用的數(shù)據(jù)庫(kù)。
圖9-3“選擇數(shù)據(jù)庫(kù)”對(duì)話框
(4)我們選擇sales數(shù)據(jù)庫(kù),單擊“下一步”按鈕,出現(xiàn)“選擇操作對(duì)象”對(duì)話框,如圖9-4所示,在該對(duì)話框中,列出了所有可選擇的表,以及可以對(duì)表進(jìn)行的數(shù)據(jù)庫(kù)操作,即插入刪除和更新。這里我們對(duì)表Salers進(jìn)行操作,因此選中表Salers對(duì)應(yīng)的插入列、刪除列和更新列下面的復(fù)選框。
圖9-4“選擇操作對(duì)象”對(duì)話框
(5)單擊“下一步”按鈕,出現(xiàn)確認(rèn)存儲(chǔ)過(guò)程信息對(duì)話框,如圖9-5所示。圖9-5“完成創(chuàng)建存儲(chǔ)過(guò)程向?qū)А睂?duì)話框
9.2.2使用企業(yè)管理器創(chuàng)建存儲(chǔ)過(guò)程
(1)在企業(yè)管理器中選中某個(gè)SQL-Server服務(wù)器中的數(shù)據(jù)庫(kù),這里選中sales數(shù)據(jù)庫(kù)。右鍵單擊數(shù)據(jù)庫(kù)下的“存儲(chǔ)過(guò)程”選項(xiàng),彈出快捷菜單,如圖9-8所示。
圖9-8快捷菜單內(nèi)容
(2)在快捷菜單中選擇“新建存儲(chǔ)過(guò)程”命令出現(xiàn)“新建存儲(chǔ)過(guò)程”對(duì)話框,如圖9-9所示。圖9-9“新建存儲(chǔ)過(guò)程”對(duì)話框
(3)在“新建存儲(chǔ)過(guò)程”對(duì)話框的“文本”列表框中輸入存儲(chǔ)過(guò)程名稱和程序語(yǔ)句,如圖9-9所示。
CREATEPROCEDUREUP_SalersASSelect*fromSalers存儲(chǔ)過(guò)程UP_Salers的完成的功能是從Salers表中查詢?nèi)繑?shù)據(jù)。(4)單擊“檢查語(yǔ)法”按鈕,執(zhí)行語(yǔ)法正確性檢驗(yàn)。(5)單擊“確定”按鈕,返回企業(yè)管理器窗口,可以看到所創(chuàng)建的存儲(chǔ)過(guò)程。9.2.3使用Transact-SQL語(yǔ)句創(chuàng)建存儲(chǔ)過(guò)程
CREATEPROC[EDURE]procedure_name[{@parameterdata_type}[VARYING][=default][OUTPUT]][,...n][WITH{RECOMPILE|ENCRYPTION|RECOMPILE,ENCRYPTION}]ASsql_statement
procedure_name:新存儲(chǔ)過(guò)程的名稱。過(guò)程名必須符合標(biāo)識(shí)符規(guī)則,且對(duì)于數(shù)據(jù)庫(kù)及其所有者必須唯一。
@parameter:過(guò)程中的參數(shù)。
data_type:參數(shù)的數(shù)據(jù)類型。
Default:參數(shù)的默認(rèn)值。
OUTPUT:表明參數(shù)是返回參數(shù)。
AS:指定過(guò)程要執(zhí)行的操作。
sql_statement:過(guò)程中要包含的任意數(shù)目和類型的
Transact-SQL語(yǔ)句。
例9-1不帶有參數(shù)的存儲(chǔ)過(guò)程下面的存儲(chǔ)過(guò)程從sales數(shù)據(jù)庫(kù)的三個(gè)表的聯(lián)接中返回訂單的編號(hào)、客戶名稱、銷售員和訂單日期。該存儲(chǔ)過(guò)程不使用任何參數(shù)。USEsalesGOCREATEPROCEDUREUP_OrderInfoASSELECTOrders.OrderID,Customers.CompanyName,Salers.Salename,Orders.OrderDateFROMOrdersINNERJOINSalersONOrders.SaleID=Salers.SaleIDINNERJOINCustomersONOrders.CustomerID=Customers.CustomerIDGO例9-2帶有參數(shù)的存儲(chǔ)過(guò)程下面的存儲(chǔ)過(guò)程從sales數(shù)據(jù)庫(kù)的三個(gè)表的聯(lián)接中返回訂單的編號(hào)、客戶名稱、銷售員和訂單日期。該存儲(chǔ)過(guò)程接受日期區(qū)間參數(shù):開(kāi)始日期和結(jié)束日期。
USEsalesGOCREATEPROCEDUREUP_OrderInfoWithParam@StartDatedatetime,@EndDatedatetimeASSELECTOrders.OrderID,Customers.CompanyName,Salers.Salename,Orders.OrderDateFROMOrdersINNERJOINSalersONOrders.SaleID=Salers.SaleIDINNERJOINCustomersONOrders.CustomerID=Customers.CustomerIDWHERE(Orders.OrderDateBETWEEN@StartDateAND@EndDate)GO9.3執(zhí)行存儲(chǔ)過(guò)程
[[EXEC[UTE]]{[@return_status=]{procedure_name]}[[@parameter=]{value|@variable[OUTPUT]|[DEFAULT]][,...n][WITHRECOMPILE]EXEC[UTE]:為執(zhí)行存儲(chǔ)過(guò)程的關(guān)鍵字。如果所執(zhí)行存儲(chǔ)過(guò)程語(yǔ)句為批中的第一個(gè)語(yǔ)句時(shí),則可以省略EXECUTE關(guān)鍵字。
@return_status:是一個(gè)可選的整型變量,保存存儲(chǔ)過(guò)程的返回狀態(tài)。
@parameter:是過(guò)程參數(shù),在
CREATEPROCEDURE語(yǔ)句中定義。
Value:是過(guò)程中參數(shù)的值。
@variable:是用來(lái)保存參數(shù)或者返回參數(shù)的變量。OUTPUT:指定存儲(chǔ)過(guò)程必須返回一個(gè)參數(shù)。
DEFAULT:根據(jù)過(guò)程的定義,提供參數(shù)的默認(rèn)值。
1.不帶參數(shù)的存儲(chǔ)過(guò)程的調(diào)用:USEsalesEXECUTEUP_OrderInfo2.帶參數(shù)的存儲(chǔ)過(guò)程的調(diào)用:
USEsalesEXECUTEUP_OrderInfoWithParam'2005-1-1','2005-5-1'--OrEXECUTEUP_OrderInfoWithParam@StartDate='2005-1-1',@EndDate='2005-5-1'--OrEXECUTEUP_OrderInfoWithParam@EndDate='2005-5-1',@StartDate='2005-1-1'3.自動(dòng)執(zhí)行的存儲(chǔ)過(guò)程可以通過(guò)調(diào)用一個(gè)系統(tǒng)存儲(chǔ)過(guò)程來(lái)設(shè)置一個(gè)存儲(chǔ)過(guò)程為自動(dòng)執(zhí)行的存儲(chǔ)過(guò)程。這樣的存儲(chǔ)過(guò)程可以在SQLserver啟動(dòng)時(shí)自動(dòng)執(zhí)行。這個(gè)系統(tǒng)存儲(chǔ)過(guò)程是sp_procoption,其調(diào)用語(yǔ)法格式為:sp_procoption[@ProcName=]'procedure',[@OptionName=]'option',[@OptionValue=]'value'
[@ProcName=]'procedure':是要為其設(shè)置或查看選項(xiàng)的過(guò)程名。
[@OptionName=]'option':要設(shè)置的選項(xiàng)的名稱。option的唯一值是startup,該值設(shè)置存儲(chǔ)過(guò)程的自動(dòng)執(zhí)行狀態(tài)。設(shè)置為自動(dòng)執(zhí)行的存儲(chǔ)過(guò)程會(huì)在每次MicrosoftSQLServer啟動(dòng)時(shí)運(yùn)行。
[[@OptionValue=]'value']:表示選項(xiàng)是設(shè)置為開(kāi)(true或on)還是關(guān)(false或off)。9.4管理存儲(chǔ)過(guò)程
9.4.1查看存儲(chǔ)過(guò)程
創(chuàng)建存儲(chǔ)過(guò)程之后,它的名字就存儲(chǔ)在系統(tǒng)表sysobjects中,它的源代碼存放在系統(tǒng)表syscomments中。可以使用企業(yè)管理器或系統(tǒng)存儲(chǔ)過(guò)程查看用戶創(chuàng)建的存儲(chǔ)過(guò)程。
1.使用企業(yè)管理器查看用戶創(chuàng)建的存儲(chǔ)過(guò)程
在企業(yè)管理器中,打開(kāi)指定的服務(wù)器和數(shù)據(jù)庫(kù)項(xiàng),這里打開(kāi)HBSI服務(wù)器下的sales數(shù)據(jù)庫(kù),并單擊sales中的“存儲(chǔ)過(guò)程”項(xiàng),此時(shí)在右邊的窗口中顯示出sales數(shù)據(jù)庫(kù)中的所有存儲(chǔ)過(guò)程。如圖9-12所示。
圖9-12存儲(chǔ)過(guò)程顯示窗口
右鍵單擊要查看的存儲(chǔ)過(guò)程,從彈出的快捷菜單中選擇“屬性”選項(xiàng),彈出“存儲(chǔ)過(guò)程屬性”選項(xiàng)?;蛘咦箧I雙擊要查看的存儲(chǔ)過(guò)程,也可以彈出“存儲(chǔ)過(guò)程屬性”選項(xiàng)。在此對(duì)話框中能夠看到存儲(chǔ)過(guò)程的源代碼。
2.使用系統(tǒng)存儲(chǔ)過(guò)程查看用戶創(chuàng)建的存儲(chǔ)過(guò)程
sp_help
sp_helptext
sp_depends
sp_stored_procedures9.4.2修改存儲(chǔ)過(guò)程
1.使用企業(yè)管理器修改存儲(chǔ)過(guò)程
2.使用Transact-SQL語(yǔ)句修改存儲(chǔ)過(guò)程
ALTERPROC[EDURE]procedure_name[{@parameterdata_type}[VARYING][=default][OUTPUT]][,...n][WITH{RECOMPILE|ENCRYPTION|RECOMPILE,ENCRYPTION}]ASsql_statement9.4.3重命名存儲(chǔ)過(guò)程
1.使用企業(yè)管理器重命名存儲(chǔ)過(guò)程名稱在企業(yè)管理器中,右鍵單擊要更名的存儲(chǔ)過(guò)程,從彈出的快捷菜單中選擇“重命名”選項(xiàng),當(dāng)存儲(chǔ)過(guò)程名稱變成可輸入狀態(tài)時(shí),就可以直接修改該存儲(chǔ)過(guò)程的名稱了。
2.使用系統(tǒng)存儲(chǔ)過(guò)程重命名存儲(chǔ)過(guò)程名稱
sp_renameold_name,new_name例如:USEsalesGOsp_renameP_OrderInfoWithParam,UP_OrderInfoDateGO9.4.4刪除存儲(chǔ)過(guò)程
1.使用企業(yè)管理器刪除存儲(chǔ)過(guò)程在企業(yè)管理器中,右鍵單擊要更名的存儲(chǔ)過(guò)程,從彈出的快捷菜單中選擇“刪除”選項(xiàng),彈出“除去對(duì)象”對(duì)話框,如圖9-14所示。在該對(duì)話框中,單擊“全部
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年醫(yī)院排隊(duì)叫號(hào)系統(tǒng)更新合同
- 綠化設(shè)計(jì)方案優(yōu)化
- 安全員A證考試通關(guān)模擬題庫(kù)及完整答案詳解【典優(yōu)】
- 安全員A證考試考試黑鉆押題【考點(diǎn)精練】附答案詳解
- 安全員A證考試考前沖刺試卷帶答案詳解(培優(yōu)b卷)
- 安全員A證考試考前自測(cè)高頻考點(diǎn)模擬試題含完整答案詳解(必刷)
- 貨幣銀行學(xué)試題庫(kù)及答案
- 江蘇連云港恒馳實(shí)業(yè)有限公司招聘考試真題及答案2022
- 安全員A證考試復(fù)習(xí)試題完美版附答案詳解
- 安全員A證考試題型+答案(考點(diǎn)題)及完整答案詳解【易錯(cuò)題】
- 云南省2026年普通高中學(xué)業(yè)水平選擇性考試調(diào)研測(cè)試歷史試題(含答案詳解)
- 廣東省花都亞熱帶型巖溶地區(qū)地基處理與樁基礎(chǔ)施工技術(shù):難題破解與方案優(yōu)化
- 家里辦公制度規(guī)范
- 基于知識(shí)圖譜的高校學(xué)生崗位智能匹配平臺(tái)設(shè)計(jì)研究
- GB 4053.3-2025固定式金屬梯及平臺(tái)安全要求第3部分:工業(yè)防護(hù)欄桿及平臺(tái)
- 環(huán)氧拋砂防滑坡道施工組織設(shè)計(jì)
- 2026中央廣播電視總臺(tái)招聘124人參考筆試題庫(kù)及答案解析
- DB15∕T 3725-2024 煤矸石路基設(shè)計(jì)與施工技術(shù)規(guī)范
- 鋼結(jié)構(gòu)屋架拆除與安裝工程施工方案
- JG/T 3030-1995建筑裝飾用不銹鋼焊接管材
- 中國(guó)重汽車輛識(shí)別代號(hào)(VIN)編制規(guī)則
評(píng)論
0/150
提交評(píng)論