[size=small]
mysql的儲存過程(stored procedure)和函式(stored function)統稱為stored routines,是否應該採用儲存過程在文章business logic: to store or not to store that is the question?中進行了詳細分析和討論。儲存過程和函式的區別的簡要說明參見stored procedure vs. function。歸納如下:
1. 函式只能通過return語句返回單個值或者表物件。而儲存過程不允許執行return,但是通過out引數返回多個值。
2. 函式是可以嵌入在sql中使用的,可以在select中呼叫,而儲存過程不行。
3. 函式限制比較多,[size=small][/size]比如不能用臨時表,只能用表變數.還有一些函式都不可用等等.而儲存過程的限制相對就比較少
4. 一般來說,儲存過程實現的功能要複雜一點,而函式的實現的功能針對性比較強。
5. 當儲存過程和函式被執行的時候,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在下次執行時就不用再編譯了。[/size]
MySQL儲存函式和儲存過程的區別
儲存過程與儲存函式的區別 1 儲存函式和儲存過程統稱為儲存例程 store routine 儲存函式的限制比較多,例如不能用臨時表,只能用表變數,而儲存過程的限制較少,儲存過程的實現功能要複雜些,而函式的實現功能針對性比較強 2 返回值不同 儲存函式必須有返回值,且僅返回乙個結果值 儲存過程可以沒有...
mysql 儲存過程和函式的區別
1.函式必須指定返回值,且引數預設為in型別。2.儲存過程沒返回值,引數可以是 in,out,in out型別,有的人可能會理解成out 也算是返回值。3.呼叫方式 函式 select my fun 過程 call my pro demo delimiter drop function if exi...
mysql 函式和儲存過程的區別
1 一般來說,儲存過程實現的功能要複雜一點,而函式的實現的功能針對性比較強。儲存過程,功能強大,可以執行包括修改表等一系列資料庫操作 使用者定義函式不能用於執行一組修改全域性資料庫狀態的操作。2 對於儲存過程來說可以返回引數,如記錄集,而函式只能返回值或者表物件。函式只能返回乙個變數 而儲存過程可以...