1. 程式人生 > >SQl中的UDF(使用者自定義函式)與儲存過程的區別、優點

SQl中的UDF(使用者自定義函式)與儲存過程的區別、優點

UDF定義:

和儲存過程很類似,使用者自定義函式是一組有序的T_SQL語句,這些語句被預先優化和編譯,並且可以作為一個單元來進行呼叫。UDF和儲存過程的主要區別在於結果的返回方式。為了能支援多種的不同的返回值,UDF比儲存過程有更多的限制。

UDF和儲存過程的具體區別:

儲存過程

使用儲存過程是可以傳入引數,也可以穿出引數。可以返回值,不過該值用於指示成功或失敗,而非返回資料。也可以返回結果集,但是在麼有將結果集插入到某種表(通常是臨時表)中以供後面使用的情況下,不能在查詢中真正的使用它們。

UDF

      使用UDF時可以傳入引數,但不可以傳出引數,輸出引數的概念被更為健壯的返回值取代。和系統函式一樣,可以返回標量值,這個值的好處是它並不想在儲存過程中那樣只限制整型資料型別,而是可以返回大多數的SQL Server 資料型別

UDF有以下兩種型別:

1.返回標量值的UDF

2.返回表的UDF

UDF的優點:

UDF的真正有點在於返回值並不限於整數,而是可以返回除了BLOB、遊標(Cursor)和時間戳(Timestamp)以外的任何有效的SQL Server 資料型別(包括使用者自定義型別)。即使想返回整數,UDF也有以下兩個吸引人的方面:

1.與儲存過程不同,使用者自定義函式返回值的目的是提供有意義的資料;而對於儲存過程來說,返回值只是說明成功或失敗,如果失敗,則會提供一些關於失敗性質的特定資訊。

2.可在查詢中內聯執行函式(例如,作為SELECT語句的一部分包含它),而使用儲存過程則不同。