什麼是儲存過程,儲存過程的作用及好處

2021-08-07 19:26:51 字數 1820 閱讀 2828

原文出處:

儲存過程(stored procedure)是一組為了完成特定功能的sql 語句集,經編譯後儲存在資料庫。中使用者通過指定儲存過程的名字並給出引數(如果該儲存過程帶有引數)來執行它。

儲存過程是sql 語句和可選控制流語句的預編譯集合,以乙個名稱儲存並作為乙個單元處理。儲存過程儲存在資料庫內,可由應用程式通過乙個呼叫執行,而且允許使用者宣告變數、有條件執行以及其它強大的程式設計功能。儲存過程在建立時即在伺服器上進行編譯,所以執行起來比單個sql語句快。

儲存過程的優點:

1.儲存過程只在創造時進行編譯,以後每次執行儲存過程都不需再重新編譯,而一般sql語句每執行一次就編譯一次,所以使用儲存過程可提高資料庫執行速度。

2.當對資料庫進行複雜操作時(如對多個表進行update,insert,query,delete時),可將此複雜操作用儲存過程封裝起來與資料庫提供的事務處理結合一起使用。

3.儲存過程可以重複使用,可減少資料庫開發人員的工作量

4.安全性高,可設定只有某此使用者才具有對指定儲存過程的使用權

缺點:

1.如果更改範圍大到需要對輸入儲存過程的引數進行更改,或者要更改由其返回的資料,則您仍需要更新程式集中的**以新增引數、更新 getvalue() 呼叫,等等,這時候估計比較繁瑣了。 

2.可移植性差 

由於儲存過程將應用程式繫結到 sql server,因此使用儲存過程封裝業務邏輯將限制應用程式的可移植性。

優點: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.如果更改範圍大到需要對輸入儲存過程的引數進行更改,或者要更改由其返回的資料,則您仍需要更新程式集中的**以新增引數、更新 getvalue() 呼叫,等等,這時候估計比較繁瑣了。

2.可移植性差

由於儲存過程將應用程式繫結到 sql server,因此使用儲存過程封裝業務邏輯將限制應用程式的可移植性。如果應用程式的可移植性在您的環境中非常重要,則將業務邏輯封裝在不特定於 rdbms 的中間層中可能是乙個更佳的選擇。

什麼是儲存過程

sql語句執行的時候要先編譯,然後執行。儲存過程就是編譯好了的一些sql語句。應用程式需要用的時候直接呼叫就可以了,所以效率會高。儲存過程介紹 儲存過程是由流控制和sql語句書寫的過程,這個過程經編譯和優化後儲存在資料庫伺服器中,應用程式使用時只要呼叫即可。在oracle中,若干個有聯絡的過程可以組...

什麼是儲存過程?

一 儲存過程介紹 儲存過程是由流控制和sql語句書寫的過程,這個過程經編譯和優化 後儲存在 資料庫伺服器中,使用時只要呼叫即可。在oracle中,若干個 有聯絡的過程可以組合在一起構成 程式包。使用儲存過程有以下的優點 儲存過程的能力大大增強了sql語言的功能和靈活性。儲存過程可 以用流 控制語句編...

什麼是儲存過程

儲存過程介紹 儲存過程是由流控制和sql語句書寫的過程,這個過程經編譯和優化 後儲存在資料庫伺服器中,使用時只要呼叫即可。在oracle中,若干個 有聯絡的過程可以組合在一起構成程式包。使用儲存過程有以下的優點 儲存過程的能力大大增強了sql語言的功能和靈活性。儲存過程可 以用流控制語句編寫,有很強...