常常有人問儲存過程和使用者自定義函式的區別究竟是什麼,在網路上嘗試搜尋,卻沒見到十分全的總結,於是自己做個總結:
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 對於儲存過程來說可以返回引數,如記錄集,而函式只能返回值或者表物件。函式只能...