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

2022-07-25 06:15:12 字數 1143 閱讀 3174

儲存過程(stored procedure)是在大型資料庫系統中,一組為了完成特定功能的sql 語句集,儲存在資料庫中,經過第一次編譯後再次呼叫不需要再次編譯,使用者通過指定儲存過程的名字並給出引數(如果該儲存過程帶有引數)來執行它。儲存過程是資料庫中的乙個重要物件,任何乙個設計良好的資料庫應用程式都應該用到儲存過程。

優點

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

②提高效能。儲存過程在建立的時候在進行了編譯,將來使用的時候不再重新翻譯。一般的sql語句每執行一次就需要編譯一次,所以使用儲存過程提高了效率。

③減少網路流量。儲存過程位於伺服器上,呼叫的時候只需要傳遞儲存過程的名稱以及引數就可以了,因此降低了網路傳輸的資料量。

④安全性。引數化的儲存過程可以防止sql注入式攻擊,而且可以將grant、deny以及revoke許可權應用於儲存過程。

缺點

1:除錯麻煩,但是用 pl/sql developer 除錯很方便!彌補這個缺點。

3:重新編譯問題,因為後端**是執行前編譯的,如果帶有引用關係的物件發生改變時,受影響的儲存過程、包將需要重新編譯(不過也可以設定成執行時刻自動編譯)。

4: 如果在乙個程式系統中大量的使用儲存過程,到程式交付使用的時候隨著使用者需求的增加會導致資料結構的變化,接著就是系統的相關問題了,最後如果使用者想維護該系統可以說是很難很難、而且代價是空前的,維護起來更麻煩。

使用者定義函式:microsoft sql server 2000 允許建立使用者定義函式。與任何函式一樣,使用者定義函式是可返回值的例程。根據所返回值的型別,每個使用者定義函式可分成以下三個類別:

1、返回可更新資料表的函式:如果使用者定義函式包含單個 select 語句且該語句可更新,則該函式返回的**格式結果也可以更新。

2、返回不可更新資料表的函式:如果使用者定義函式包含不止乙個 select 語句,或包含乙個不可更新的 select 語句,則該函式返回的**格式結果也不可更新。

3、返回標量值的函式:使用者定義函式可以返回標量值。

自定義函式優缺點

1. 諸多限制,有許多語句不能使用,許多功能不能實現

2. 可以直接引用返回值

3. 用表變數返回記錄集

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

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

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

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

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

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