資料庫中函式和儲存過程的區別

2022-08-21 04:39:10 字數 2387 閱讀 2884

先看一下儲存過程和函式的定義。

儲存過程:

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

儲存過程可包含程式流、邏輯以及對資料庫的查詢。它們可以接受引數、輸出引數、返回單個或多個結果集以及返回值。 

可以出於任何使用 sql 語句的目的來使用儲存過程,它具有以下優點: 

1、可以在單個儲存過程中執行一系列 sql 語句。

2、可以從自己的儲存過程內引用其它儲存過程,這可以簡化一系列複雜語句。

3、儲存過程在建立時即在伺服器上進行編譯,所以執行起來比單個 sql 語句快。

使用者定義函式:

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

1、返回可更新資料表的函式 

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

2、返回不可更新資料表的函式 

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

3、返回標量值的函式 

使用者定義函式可以返回標量值。

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

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

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

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

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

先看一下儲存過程和函式的定義。

儲存過程:

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

儲存過程可包含程式流、邏輯以及對資料庫的查詢。它們可以接受引數、輸出引數、返回單個或多個結果集以及返回值。 

可以出於任何使用 sql 語句的目的來使用儲存過程,它具有以下優點: 

1、可以在單個儲存過程中執行一系列 sql 語句。

2、可以從自己的儲存過程內引用其它儲存過程,這可以簡化一系列複雜語句。

3、儲存過程在建立時即在伺服器上進行編譯,所以執行起來比單個 sql 語句快。

使用者定義函式:

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

1、返回可更新資料表的函式 

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

2、返回不可更新資料表的函式 

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

3、返回標量值的函式 

使用者定義函式可以返回標量值。

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

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

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

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

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

Oracle資料庫儲存過程和函式的區別

儲存過程 函式 作為pl sql 語句執行 作為表示式的一部分呼叫 在規範中不包含return 子句 必須在規範中包含return 子句 不返回任何值 必須返回單個值 可以包含return 語句,但是與函式不同,它不能用於返回值 必須包含至少一條return 語句 儲存過程使我們可以在sql命令中直...

查詢資料庫中的儲存過程和函式

查詢資料庫中的儲存過程和函式 方法一 select name from mysql.proc where db your db name and type procedure 儲存過程 select name from mysql.proc where db your db name and typ...

查詢資料庫中的儲存過程和函式

方法一 select name from mysql.proc where db your db name and type procedure 儲存過程 select name from mysql.proc where db your db name and type function 函式 方...