本文部分內容**
本質上沒區別。只是函式有如:只能返回乙個變數的限制。而儲存過程可以返回多個。而函式是可以嵌入在sql中使用的,可以在select中呼叫,而儲存過程不行。執行的本質都一樣。
函式限制比較多,比如不能用臨時表,只能用表變數.還有一些函式都不可用等等.而儲存過程的限制相對就比較少
1. 一般來說,儲存過程實現的功能要複雜一點,而函式的實現的功能針對性比較強。
2. 對於儲存過程來說可以返回引數,而函式只能返回值或者表物件。
3. 儲存過程一般是作為乙個獨立的部分來執行(exec執行),而函式可以作為查詢語句的乙個部分來呼叫(select呼叫),由於函式可以返回乙個表物件,因此它可以在查詢語句中位於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中使用的,可以在select中呼叫,而儲存過程不行。執行的本質都一樣。函式限制比較多,比如不能用臨時表,只能用表變數 還有一些函式都不可用等等 而儲存過程的限制相對就比較少 1.一般來說,儲存過程實現...
Oracle中儲存過程和函式的區別
儲存過程和函式 例子 建立過程 create or replace procedure add emailinfo namee email info.fullname type address email info.email address type isbegin insert into ema...
SQL SERVER 中儲存過程和函式的區別
儲存過程 函式儲存過程定義中的 引數可以為任意資料型別 包括使用者定義的型別,同時過程還 可以擁有輸出引數 用於返回任何資料型別的結果。儲存過程只能直接 返回整型值 通常用於顯示過程執行的狀態。在儲存過程定義中可以 包含任何 t sql 語句,可以向使用者返回查詢的結果集 允許遞迴 最大32 層 可...