1. 程式人生 > >儲存過程和自定義函式的優缺點

儲存過程和自定義函式的優缺點

儲存過程和使用者定義函式都是“SQL語句組成的子程式,用以封裝程式碼以便重複使用”。但區別也是顯而易見的。簡單說,儲存過程功能強大,但呼叫不便,使用者函式正相反。

使用者定義函式的優點
可以在SQL語句中呼叫,直接使用返值,從而形成複雜的SQL應用。
儲存過程則只能用execute命令呼叫,用輸出引數的到返回的結果。

使用者定義函式的缺點
能在函式中使用的語句有嚴格限制:

  1. 不支援create、drop等DDL命令
  2. insert、delete、update只能用在臨時表上
  3. 不支援動態SQL
  4. 不支援“不確定”的函式,比如常用的getdate。不確定函式是指輸入引數相同,返回結果可能不同的函式。全部不確定函式如下表
    @@CONNECTIONS @@TOTAL_ERRORS

變通辦法
要解決使用者函式的種種限制,可以巧妙運用使用者函式呼叫儲存過程。