【摘要】本文研究在客戶/服務(wù)器模式數(shù)據(jù)庫應(yīng)用程序開發(fā)中,通過使用存儲在數(shù)據(jù)庫服務(wù)器中的存儲過程,將復(fù)雜操作封裝起來。需要數(shù)據(jù)庫提供相應(yīng)服務(wù)時,只需要調(diào)用該存儲過程即可。存儲過程可以有效減少網(wǎng)絡(luò)流量,提高數(shù)據(jù)安全,使功能簡化、流程優(yōu)化,提高工作效率和質(zhì)量。
【關(guān)鍵詞】客戶/服務(wù)器模式存儲過程數(shù)據(jù)庫應(yīng)用程序開發(fā)
一、引言
在開發(fā)客戶/服務(wù)器模式數(shù)據(jù)庫應(yīng)用程序過程中,SQL語句是應(yīng)用程序與數(shù)據(jù)庫之間使用的主要編程接口。應(yīng)用程序與數(shù)據(jù)庫交互執(zhí)行操作有兩種方式:一種是在應(yīng)用程序中存儲一系列操作命令,應(yīng)用程序在執(zhí)行的過程中向數(shù)據(jù)庫發(fā)送每一條命令;另一種操作方式是在數(shù)據(jù)庫中定義存儲過程,在存儲過程中記錄了一系列的操作命令,每次應(yīng)用程序只需要調(diào)用該過程就可以完成所有操作。
二、在數(shù)據(jù)庫應(yīng)用程序開發(fā)中使用存儲過程的優(yōu)勢
在客戶/服務(wù)器模式數(shù)據(jù)庫應(yīng)用程序中開發(fā)者盡量不使用存儲在客戶計(jì)算機(jī)本地的SQL程序,而是將常用的或很復(fù)雜的工作預(yù)先用SQL語句寫好,并用一個指定的名稱存儲起來,那么以后要求數(shù)據(jù)庫提供與已定義好的存儲過程的功能相同的服務(wù)時,只要調(diào)用這個存儲過程就可以了。使用存儲過程完成操作有很大優(yōu)勢。
(1)符合模塊化程序設(shè)計(jì)思想。存儲過程是根據(jù)實(shí)際功能需要而創(chuàng)建的一個程序模塊,它存儲在數(shù)據(jù)庫服務(wù)器中,所有用戶要完成存儲過程的功能,只要在程序中調(diào)用該存儲過程即可。并且存儲過程可以重復(fù)使用,這也減少數(shù)據(jù)庫開發(fā)人員的工作量。當(dāng)對數(shù)據(jù)庫進(jìn)行復(fù)雜操作時,將操作用存儲過程封裝起來,與數(shù)據(jù)庫提供的事務(wù)處理結(jié)合一起使用。
(2)提高數(shù)據(jù)庫應(yīng)用程序的執(zhí)行效率。存儲過程只在創(chuàng)建時就進(jìn)行編譯和優(yōu)化,以后每次執(zhí)行存儲過程都不需再重新編譯,所以調(diào)用存儲過程可提高數(shù)據(jù)庫執(zhí)行速度。這能大大改善系統(tǒng)的性能。
(3)減少網(wǎng)絡(luò)流量。一個復(fù)雜的操作可能需要數(shù)百行T-SQL代碼的操作,應(yīng)用程序向數(shù)據(jù)庫服務(wù)器發(fā)送每一條指令,并對返回的數(shù)據(jù)進(jìn)行處理。如果將其創(chuàng)建成存儲過程,那么使用一條調(diào)用存儲過程的語句就可完成所有操作,這樣就可避免在網(wǎng)絡(luò)上發(fā)送數(shù)百行的代碼,從而減少了網(wǎng)絡(luò)負(fù)荷。
(4)存儲過程安全性高。數(shù)據(jù)庫管理員可以設(shè)定指定用戶具有對指定存儲過程的使用權(quán)限,而且管理員可以不授予用戶訪問存儲過程中涉及的表的權(quán)限,而只授予執(zhí)行存儲過程的權(quán)限。這樣,可以保證用戶通過存儲過程操縱數(shù)據(jù)庫中的數(shù)據(jù),又可以保證用戶不能直接訪問涉及的表。用戶通過存儲過程來訪問表,所能進(jìn)行的操作是有限制的,從而有效保證表中數(shù)據(jù)的安全性。
三、在客戶/服務(wù)器模式數(shù)據(jù)庫應(yīng)用程序開發(fā)中用戶存儲過程的創(chuàng)建及執(zhí)行
存儲過程類似于編程語言中的過程和函數(shù),用戶存儲過程可以使用T-SQL語句CREATE PROCEDURE來創(chuàng)建,使用T-SQL語句EXECUTE(或EXEC)來執(zhí)行存儲過程。
在學(xué)生圖書借閱管理數(shù)據(jù)庫系統(tǒng)中,圖書管理最重要的兩項(xiàng)事務(wù)是:借書過程和還書過程。為了提高工作效率,創(chuàng)建如下借書存儲過程和還書存儲過程:
在學(xué)生圖書借閱管理數(shù)據(jù)庫系統(tǒng)中,將兩個復(fù)雜的操作借書過程和還書過程用存儲過程實(shí)現(xiàn)。在應(yīng)用程序中,只需要量輸入借書相關(guān)信息和還書相關(guān)信息,調(diào)用存儲過程,利用參數(shù)傳遞即可完成相應(yīng)的事務(wù)操作。
四、結(jié)論
存儲過程應(yīng)用較廣,它存儲在數(shù)據(jù)庫中,能提高客戶/服務(wù)器模式數(shù)據(jù)庫應(yīng)用系統(tǒng)的性能,能大大增強(qiáng)系統(tǒng)的執(zhí)行效率和數(shù)據(jù)的安全性,減少網(wǎng)絡(luò)流量,減輕數(shù)據(jù)庫服務(wù)器的負(fù)擔(dān)。可見,編寫用戶存儲過程將是客戶/服務(wù)器模式下數(shù)據(jù)庫應(yīng)用程序開發(fā)中T-SQL編程的一個最主要應(yīng)用。