oracle的存儲(chǔ)過(guò)程優(yōu)點(diǎn)
1.存儲(chǔ)過(guò)程可以使得程序執(zhí)行效率更高、安全性更好,因?yàn)檫^(guò)程建立之后 已經(jīng)編譯并且儲(chǔ)存到數(shù)據(jù)庫(kù),直接寫sql就需要先分析再執(zhí)行因此過(guò)程效率更高,直接寫sql語(yǔ)句會(huì)帶來(lái)安全性問(wèn)題,如:sql注入
2.建立過(guò)程不會(huì)很耗系統(tǒng)資源,因?yàn)檫^(guò)程只是在調(diào)用才執(zhí)行。
3.存儲(chǔ)過(guò)程可以用于降低網(wǎng)絡(luò)流量,存儲(chǔ)過(guò)程代碼直接存儲(chǔ)于數(shù)據(jù)庫(kù)中,所以不會(huì)產(chǎn)生大量T-sql語(yǔ)句的代碼流量。
4.使用存儲(chǔ)過(guò)程使您能夠增強(qiáng)對(duì)執(zhí)行計(jì)劃的重復(fù)使用,由此可以通過(guò)使用遠(yuǎn)程過(guò)程調(diào)用 (RPC) 處理服務(wù)器上的存儲(chǔ)過(guò)程而提高性能。RPC 封裝參數(shù)和調(diào)用服務(wù)器端過(guò)程的方式使引擎能夠輕松地找到匹配的執(zhí)行計(jì)劃,并只需插入更新的參數(shù)值。
5.可維護(hù)性高,更新存儲(chǔ)過(guò)程通常比更改、測(cè)試以及重新部署程序集需要較少的時(shí)間和精力。
6.代碼精簡(jiǎn)一致,一個(gè)存儲(chǔ)過(guò)程可以用于應(yīng)用程序代碼的不同位置。
7.增強(qiáng)安全性:
a、通過(guò)向用戶授予對(duì)存儲(chǔ)過(guò)程(而不是基于表)的訪問(wèn)權(quán)限,它們可以提供對(duì)特定數(shù)據(jù)的訪問(wèn);
b、提高代碼安全,防止 SQL注入(但未徹底解決,例如,將數(shù)據(jù)操作語(yǔ)言--DML,附加到輸入?yún)?shù));
c、SqlParameter 類指定存儲(chǔ)過(guò)程參數(shù)的數(shù)據(jù)類型,作為深層次防御性策略的一部分,可以驗(yàn)證用戶提供的值類型(但也不是萬(wàn)無(wú)一失,還是應(yīng)該傳遞至數(shù)據(jù)庫(kù)前得到附加驗(yàn)證)。
缺點(diǎn)就是:
1、大量的利用過(guò)程,會(huì)對(duì)服務(wù)器壓力比較大。