數(shù)據(jù)庫中存儲過程有什么作用?
第一:存儲過程因?yàn)镾QL語句已經(jīng)預(yù)編繹過了,因此運(yùn)行的速度比較快。
第二:存儲過程可以接受參數(shù)、輸出參數(shù)、返回單個或多個結(jié)果集以及返回值??梢韵虺绦蚍祷劐e誤原因。
第三:存儲過程運(yùn)行比較穩(wěn)定,不會有太多的錯誤。只要一次成功,以后都會按這個程序運(yùn)行。
第四:存儲過程主要是在服務(wù)器上運(yùn)行,減少對客戶機(jī)的壓力。
第五:存儲過程可以包含程序流、邏輯以及對數(shù)據(jù)庫的查詢。同時可以實(shí)體封裝和隱藏了數(shù)據(jù)邏輯。
第六:存儲過程可以在單個存儲過程中執(zhí)行一系列 SQL 語句。
第七:存儲過程可以從自己的存儲過程內(nèi)引用其它存儲過程,這可以簡化一系列復(fù)雜語句。
其實(shí)存儲過程還可以控制權(quán)限,比如一個表不直接允許用戶直接訪問,但要求允許用戶訪問和修改其中一個或多個字段,那就可以通過一個存儲過程來實(shí)現(xiàn)并允許該用戶使用該存儲過程。
還有,如果多條SQL語句執(zhí)行過程中,過程環(huán)節(jié)返回了數(shù)據(jù)作為后面環(huán)節(jié)的輸入數(shù)據(jù),如果直接通過SQL語句執(zhí)行,勢必導(dǎo)致大量的數(shù)據(jù)通過網(wǎng)絡(luò)返回到客戶機(jī),并在客戶機(jī)運(yùn)算;如果封裝在存儲過程中,則將運(yùn)算放在服務(wù)器進(jìn)行,不但減少了客戶機(jī)的壓力,同時也減少了網(wǎng)絡(luò)流量,提高了執(zhí)行的效率。
觸發(fā)器(trigger)是個特殊的存儲過程,它的執(zhí)行不是由程序調(diào)用,也不是手工啟動,而是由個事件來觸發(fā),比如當(dāng)對一個表進(jìn)行操作( insert,delete, update)時就會激活它執(zhí)行。觸發(fā)器經(jīng)常用于加強(qiáng)數(shù)據(jù)的完整性約束和業(yè)務(wù)規(guī)則等。
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請
點(diǎn)擊舉報。