第13章 數(shù)據(jù)庫對象
13.1 存儲過程
13.1.1 存儲過程基本概念
1、 在關(guān)系數(shù)據(jù)庫中,SQL語言是應(yīng)用程序和數(shù)據(jù)庫管理之間的主要編程接口;
2、 使用SQL語言編寫代碼時,可用兩種方法存儲和執(zhí)行代碼:
(1) 在客戶端存儲代碼,并創(chuàng)建向數(shù)據(jù)庫管理系統(tǒng)發(fā)送SQL命令,并處理返回結(jié)果的應(yīng)用程序;
(2) 將這些發(fā)送的SQL語句存儲在數(shù)據(jù)庫管理系統(tǒng)中,這些存儲在數(shù)據(jù)庫管理系統(tǒng)中的SQL語句就是存儲過程,然后再創(chuàng)建執(zhí)行存儲過程并處理返回結(jié)果的應(yīng)用程序。
3、 使用存儲過程的好處:
(1) 模塊化程序設(shè)計:只需創(chuàng)建一次存儲過程并將其存儲在數(shù)據(jù)庫中,以后就可以在應(yīng)用程序中多次調(diào)用存儲過程;
(2) 提高性能:系統(tǒng)在創(chuàng)建存儲過程時對其進行分析和優(yōu)化,并在第一次執(zhí)行時進行語法檢查和編譯,編譯好的代碼放入內(nèi)存中,以后再執(zhí)行此存儲過程時,只需直接執(zhí)行內(nèi)存中的代碼,從而提高代碼的執(zhí)行效率;
(3) 減少網(wǎng)絡(luò)流量:一個需要數(shù)百行SQL代碼完成的操作現(xiàn)在只需一條執(zhí)行存儲過程的代碼即可實現(xiàn),因此,不再需要在網(wǎng)絡(luò)中發(fā)送這些多語句;
(4) 可作為安全機制使用:
13.1.2 創(chuàng)建和執(zhí)行存儲過程
1、 創(chuàng)建存儲過程的SQL語句為:CREATE PROCEDURE,語法格式為:
CREATE PROCEDURE 存儲過程名
[{@ 參數(shù)名 數(shù)據(jù)類型}[=default][OUTPUT]
][,…n]
AS
SQL語句[…n]
其中:
(1) default:表示參數(shù)的默認值。如果定義了默認值,則在執(zhí)行存儲過程時,可以不必指定該參數(shù)的值,默認值必須是常量或NULL;
(2) OUTPUT:表明參數(shù)是輸出參數(shù),該選項的值可以返回給存儲過程的調(diào)用者。
2、執(zhí)行存儲過程的SQL語句是EXECUTE,語法格式:
CREATE EXECUTE 存儲過程名 [實參[,OUTPUT][,…n]]
1、 執(zhí)行有多個輸入?yún)?shù)的存儲過程時,參數(shù)的傳遞方式有兩種:
(1) 按參數(shù)位置傳遞值:指執(zhí)行存儲過程的EXEC語句中的實參的排列順序必須與定義存儲過程時定義的參數(shù)的順序一致;
(2) 按參數(shù)名傳遞值:指執(zhí)行存儲過程的EXEC語句中要指明定義存儲過程時指定的參數(shù)的名字以及此參數(shù)的值,而不關(guān)心參數(shù)的定義順序。
2、 注意:
(1) 在執(zhí)行有輸出參數(shù)的存儲過程時,執(zhí)行語句中的變量名的后邊要加上OUTPUT修飾符;
(2) 在調(diào)用有輸出參數(shù)的存儲過程時,與輸出參數(shù)對應(yīng)的是一個變量,此變量用于保存輸出參數(shù)返回的結(jié)果;
相關(guān)推薦:2010年9月計算機等級考試精華備考資料匯總北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |