儲過程和使用者自定義函式的區別

2021-04-22 09:30:19 字數 1431 閱讀 9848

常常有人問儲存過程和使用者自定義函式的區別究竟是什麼,在網路上嘗試搜尋,卻沒見到十分全的總結,於是自己做個總結:

procedure:

create  [schema_name.] procedure_name [ ; number ] 

[  [ varying ] [ = default ] [ out | output ] [readonly]

] [ ,...n ] 

[ with [ ,...n ] ]

[ for replication ] 

as [;]

::= 

[ encryption ]

[ recompile ]

[ execute as clause ]

::= 

::=external name assembly_name.class_name.method_name

function:

create function [ schema_name. ] function_name 

( [  

[ ,...n ]])

returns return_data_type

[ with [ ,...n ] ]

[ as ]

begin 

function_body 

return scalar_expression

end[ ; ]

區別:

1.巢狀

function:無限制

sp:最多32層

2.改資料操作

function:不支援

sp:支援

3.結果返回

function:可以返回標量值,返回表變數(表甚至可以定義名字) 具有不確定性,必須返回

sp:並不一定需要返回,可返回記錄集。

戶定義函式不能用於執行一組修改全域性資料庫狀態的操作

4.是否可以使用非確定函式

function:不允許在使用者定義函式主體中內建非確定函式。

sp:可以使用非確定函式。

5.返回值引用

function:其返回值可以被直接引用

sp:其返回值不能被直接引用

6.呼叫

function:在其他語句中呼叫select

sp:exec

7.是否可以使用out引數

function:function沒有out引數,但是可以有返回值.

sp:可以out引數

儲存過程和使用者自定義函式

一 儲存過程的簡單建立,修改與刪除 1.建立簡單的儲存過程 useadventureworks gocreate proc spemployee asselect from humanresources.employee 執行上面的 就建立了乙個儲存過程 如果想執行這個儲存過程 可以直接執行exec...

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

儲存過程和自定義函式的區別 difference between procedure and user defined function 首先來看一下儲存過程和自定義函式的概念 一 什麼是儲存過程?儲存過程可以使得對資料庫的管理 以及顯示關於資料庫及其使用者資訊的工作容易得多。儲存過程是 sql 語...

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

自定義函式和儲存過程的區別 1 一般來說,儲存過程實現的功能要複雜一點,而函式的實現的功能針對性比較強。儲存過程,功能強大,可以執行包括修改表等一系列資料庫操作 使用者定義函式不能用於執行一組修改全域性資料庫狀態的操作。2 對於儲存過程來說可以返回引數,如記錄集,而函式只能返回值或者表物件。函式只能...