說(shuō)明:如果您有任何疑問(wèn)或想咨詢其他業(yè)務(wù)請(qǐng)撥打電話 400 685 0732
全網(wǎng)監(jiān)測(cè)海量數(shù)據(jù)按需發(fā)布監(jiān)測(cè)預(yù)警
實(shí)時(shí)把握輿情動(dòng)態(tài)精準(zhǔn)追溯信息源頭
存儲(chǔ)過(guò)程(StoredProcedure)是在大型數(shù)據(jù)庫(kù)系統(tǒng)中,一組為了完成特定功能的SQL語(yǔ)句集,存儲(chǔ)在數(shù)據(jù)庫(kù)中,經(jīng)過(guò)第一次編譯后再次調(diào)用不需要再次編譯,用戶通過(guò)指定存儲(chǔ)過(guò)程的名字并給出參數(shù)(如果該存儲(chǔ)過(guò)程帶有參數(shù))來(lái)執(zhí)行它,存儲(chǔ)過(guò)程是數(shù)據(jù)庫(kù)中的一個(gè)重要對(duì)象;存儲(chǔ)過(guò)程中可以包含邏輯控制語(yǔ)句和數(shù)據(jù)操縱語(yǔ)句,它可以接受參數(shù),輸出參數(shù),返回單個(gè)或多個(gè)結(jié)果集以及返回值。
sql存儲(chǔ)過(guò)程——存儲(chǔ)過(guò)程的優(yōu)點(diǎn)
優(yōu)點(diǎn):
由于應(yīng)用程序隨著時(shí)間推移會(huì)不斷更改,增刪功能,SQL語(yǔ)句會(huì)變得更復(fù)雜,存儲(chǔ)過(guò)程為封裝此類(lèi)代碼提供了一個(gè)替換位置;
由于存儲(chǔ)過(guò)程在創(chuàng)建時(shí)即在數(shù)據(jù)庫(kù)服務(wù)器上進(jìn)行了編譯并存儲(chǔ)在數(shù)據(jù)庫(kù)中,所以存儲(chǔ)過(guò)程運(yùn)行要比單個(gè)的SQL語(yǔ)句塊要快;
由于在調(diào)用時(shí)只需用提供存儲(chǔ)過(guò)程名和必要的參數(shù)信息,所以在一定程度上也可以減少網(wǎng)絡(luò)流量,簡(jiǎn)單網(wǎng)絡(luò)負(fù)擔(dān);
可維護(hù)性高,更新存儲(chǔ)過(guò)程通常比更改,測(cè)試以及重新部署程序集需要較少的時(shí)間和精力;
代碼精簡(jiǎn)一致,一個(gè)存儲(chǔ)過(guò)程可以用于應(yīng)用程序代碼的不同位置;
增強(qiáng)安全性:
通過(guò)向用戶授予對(duì)存儲(chǔ)過(guò)程(而不是基于表)的訪問(wèn)權(quán)限,它們可以提供對(duì)特定數(shù)據(jù)的訪問(wèn);
提高代碼安全,防止SQL注入(但未徹底解決,例如將數(shù)據(jù)操作語(yǔ)言DML附加到輸入?yún)?shù));
SQLParameter類(lèi)指定存儲(chǔ)過(guò)程參數(shù)的數(shù)據(jù)類(lèi)型,作為深層次防御性策略的一部分,可以驗(yàn)證用戶提供的值類(lèi)型(但也不是萬(wàn)無(wú)一失,還是應(yīng)該傳遞至數(shù)據(jù)庫(kù)前得到附加驗(yàn)證)
存儲(chǔ)過(guò)程的缺點(diǎn)
缺點(diǎn):
如果更改范圍大到需要對(duì)輸入存儲(chǔ)過(guò)程的參數(shù)進(jìn)行更改,或者要更改由其返回的數(shù)據(jù),則仍需要更新程序集中的代碼以添加參數(shù),等等;
可移植性差,由于存儲(chǔ)過(guò)程將應(yīng)用程序綁定到Server,因此使用存儲(chǔ)過(guò)程封裝業(yè)務(wù)邏輯將限制應(yīng)用程序的可移植性;如果應(yīng)用程序的可移植性在您的環(huán)境中非常重要,則將業(yè)務(wù)邏輯封裝在不特定于RDBMS的中間層中可能是一個(gè)更佳的選擇
存儲(chǔ)過(guò)程(storedprocedure)有時(shí)也稱sproc,它是真正的腳本,更準(zhǔn)確地說(shuō),它是批處理(batch),但都不是很確切,它存儲(chǔ)與數(shù)據(jù)庫(kù)而不是單獨(dú)的文件中。存儲(chǔ)過(guò)程中有輸入?yún)?shù),輸出參數(shù)以及返回值等。如果大家還想了解更多與之有關(guān)的信息,歡迎關(guān)注我們文軍營(yíng)銷(xiāo)的官網(wǎng)。
推薦閱讀
說(shuō)明:如果您有任何疑問(wèn)或想咨詢其他業(yè)務(wù)請(qǐng)撥打電話 400 685 0732