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