SQl中的UDF(使用者自定義函式)與儲存過程的區別、優點
阿新 • • 發佈:2019-02-11
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語句的一部分包含它),而使用儲存過程則不同。