在MSSQL中儲存過程和自定義函式的區別

2022-02-22 09:47:56 字數 891 閱讀 9051

本質上沒區別。只是函式有如:只能返回乙個變數的限制。而儲存過程可以返回多個。而函式是可以嵌入在sql中使用的,可以在select中呼叫,而儲存過程不行。執行的本質都一樣。

函式限制比較多,比如不能用臨時表,只能用表變數.還有一些函式都不可用等等.而儲存過程的限制相對就比較少

由於我現在基本上是dba的工作,因此平時也看一些資料庫方面的書籍。但是我一直對儲存過程和函式之間的區別掌握不透。我向來認為儲存過程可以實現的操作,函式也一樣可以實現。最近,剛好大學的老師給我們上sql-server的課程,我對這個問題的疑惑終於慢慢解開。今天晚上順便看了些網上的資料,覺得以下分析比較合理:

1.    一般來說,儲存過程實現的功能要複雜一點,而函式的實現的功能針對性比較強。

2.    對於儲存過程來說可以返回引數,而函式只能返回值或者表物件。

3.    儲存過程一般是作為乙個獨立的部分來執行,而函式可以作為查詢語句的乙個部分來呼叫,由於函式可以返回乙個表物件,因此它可以在查詢語句中位於from關鍵字的後面。

4.    當儲存過程和函式被執行的時候,sql manager會到procedure cache中去取相應的查詢語句,如果在procedure cache裡沒有相應的查詢語句,sql manager就會對儲存過程和函式進行編譯。

procedure cache中儲存的是執行計畫 (execution plan) ,當編譯好之後就執行procedure cache中的execution plan,之後sql server會根據每個execution plan的實際情況來考慮是否要在cache中儲存這個plan,評判的標準乙個是這個execution plan可能被使用的頻率;其次是生成這個plan的代價,也就是編譯的耗時。儲存在cache中的plan在下次執行時就不用再編譯了。

**自:

SQL中儲存過程和自定義函式的區別

剛開始學sql,很快就發現儲存過程和資料庫自定義函式之間貌似有很多的相同點,所以把其差別簡單做下記錄,以備以後查閱 儲存過程 儲存過程可以使得對資料庫的管理 以及顯示關於資料庫及其使用者資訊的工作容易得多。儲存過程是 sql 語句和可選控制流語句的預編譯集合,以乙個名稱儲存並作為乙個單元處理。儲存過...

SQL中儲存過程和自定義函式的區別

儲存過程 儲存過程可以使得對資料庫的管理 以及顯示關於資料庫及其使用者資訊的工作容易得多。儲存過程是 sql 語句和可選控制流語句的預編譯集合,以乙個名稱儲存並作為乙個單元處理。儲存過程儲存在資料庫內,可由應用程式通過乙個呼叫執行,而且允許使用者宣告變數 有條件執行以及其它強大的程式設計功能。儲存過...

SQL中儲存過程和自定義函式的區別

sql中儲存過程和自定義函式的區別 儲存過程 儲存過程可以使得對資料庫的管理 以及顯示關於資料庫及其使用者資訊的工作容易得多。儲存過程是 sql 語句和可選控制流語句的預編譯集合,以乙個名稱儲存並作為乙個單元處理。儲存過程儲存在資料庫內,可由應用程式通過乙個呼叫執行,而且允許使用者宣告變數 有條件執...