儲存過程
優點:
1.由於應用程式隨著時間推移會不斷更改,增刪功能,t-sql過程**會變得更複雜,storedprocedure為封裝此**提供了乙個替換位置。
2.執行計畫(儲存過程在首次執行時將被編譯,這將產生乙個執行計畫-- 實際上是 microsoft sql server為在儲存過程中獲取由 t-sql 指定的結果而必須採取的步驟的記錄。)快取改善效能。
........但sql server新版本,執行計畫已針對所有 t-sql 批處理進行了快取,而不管它們是否在儲存過程中,所以沒比較優勢了。
3.儲存過程可以用於降低網路流量,儲存過程**直接儲存於資料庫中,所以不會產生大量t-sql語句的**流量。
4.使用儲存過程使您能夠增強對執行計畫的重複使用,由此可以通過使用遠端過程呼叫 (rpc) 處理伺服器上的儲存過程而提高效能。rpc 封裝引數和呼叫伺服器端過程的方式使引擎能夠輕鬆地找到匹配的執行計畫,並只需插入更新的引數值。
5.可維護性高,更新儲存過程通常比更改、測試以及重新部署程式集需要較少的時間和精力。
6.**精簡一致,乙個儲存過程可以用於應用程式**的不同位置。
7.更好的版本控制,通過使用 microsoft visual sourcesafe 或某個其他源**控制工具,您可以輕鬆地恢復到或引用舊版本的儲存過程。
8.增強安全性:
a、通過向使用者授予對儲存過程(而不是基於表)的訪問許可權,它們可以提供對特定資料的訪問;
b、提高**安全,防止 sql注入(但未徹底解決,例如,將資料操作語言--dml,附加到輸入引數);
c、sqlparameter 類指定儲存過程引數的資料型別,作為深層次防禦性策略的一部分,可以驗證使用者提供的值型別(但也不是萬無一失,還是應該傳遞至資料庫前得到附加驗證)。
1、預編譯,儲存過程預先編譯好放在資料庫內,減少編譯語句所花的時間。
2、快取,編譯好的儲存過程會進入快取,所以對於經常執行的儲存過程,除了第一次執行外,其他次執行的速度會有明顯提高。
3、減少網路傳輸,特別對於處理一些資料的儲存過程,不必像直接用sql語句實現那樣多次傳送資料到客戶端。
4、更好的利用伺服器記憶體,特別對於處理中間資料量不大的情況,儲存過程中可以利用存放在記憶體的表變數。
缺點:
1.如果更改範圍大到需要對輸入儲存過程的引數進行更改,或者要更改由其返回的資料,則您仍需要更新程式集中的**以新增引數、更新 getvalue() 呼叫,等等,這時候估計比較繁瑣了。
2.可移植性差
由於儲存過程將應用程式繫結到 sql server,因此使用儲存過程封裝業務邏輯將限制應用程式的可移植性。如果應用程式的可移植性在您的環境中非常重要,則將業務邏輯封裝在不特定於 rdbms 的中間層中可能是乙個更佳的選擇。
索引
SQL儲存過程
什麼是儲存過程呢?定義 將常用的或很複雜的工作,預先用sql語句寫好並用乙個指定的名稱儲存起來,那麼以後要叫資料庫提供與已定義好的儲存過程的功能相同的服務時,只需呼叫execute,即可自動完成命令。講到這裡,可能有人要問 這麼說儲存過程就是一堆sql語句而已啊?microsoft公司為什麼還要新增...
sql儲存過程
概念 sql server提供了一種方法,它可以將一些固定的操作集中起來由sql server資料庫伺服器來完成,以實現某個任務,這種方法就是儲存過程。儲存過程是sql語句和可選控制流語句的預編譯集合,儲存過程在資料庫中可由應用程式通過乙個呼叫執行,而且允許使用者申明變數 有條件的執行以及其它強大的...
SQL儲存過程
儲存過程 1.返回值 create proc example4 as begin declare 返回值 int select 返回值 sum 庫存量 from 產品 return 返回值 endgo 接受這個返回值必須要用變數來接收,如 declare 接收值 int exec 接收值 examp...