純量使用者自訂函式

在 SQL Server 中撰寫函式與預存程序

Meghan Kwartler

IT Consultant

使用者自訂函式(UDF)

是什麼?

常式,可:

  • 接受輸入參數
  • 執行動作
  • 回傳結果(單一純量值或資料表)

為什麼?

  • 可縮短執行時間
  • 可減少網路流量
  • 支援模組化程式設計
在 SQL Server 中撰寫函式與預存程序

什麼是模組化程式設計?

  • 一種軟體設計技巧
  • 將功能拆成獨立、可互換的模組
  • 允許程式碼重複使用
  • 提升程式碼可讀性
在 SQL Server 中撰寫函式與預存程序

食譜中的函式

模組化食譜示意圖 Chapter Two Recipe for Modular programming4.jpg

在 SQL Server 中撰寫函式與預存程序

烘焙函式的輸入參數

烘焙函式的輸入參數示意 Chapter Two Recipe for Modular programming3.jpg

在 SQL Server 中撰寫函式與預存程序

無輸入參數的純量 UDF

-- Scalar function with no input parameters
CREATE FUNCTION GetTomorrow()
    RETURNS date AS BEGIN
RETURN (SELECT DATEADD(day, 1, GETDATE()))
END
在 SQL Server 中撰寫函式與預存程序

單一參數的純量 UDF

-- Scalar function with one parameter
CREATE FUNCTION GetRideHrsOneDay (@DateParm date)
    RETURNS numeric AS BEGIN
RETURN (
  SELECT 
    SUM(
      DATEDIFF(second, PickupDate, DropoffDate)
    )/ 3600 
  FROM 
    YellowTripData 
  WHERE 
    CONVERT (date, PickupDate) = @DateParm
) END;
在 SQL Server 中撰寫函式與預存程序

兩個輸入參數的純量 UDF

-- Scalar function with two input parameters
CREATE FUNCTION GetRideHrsDateRange (
  @StartDateParm datetime, @EndDateParm datetime
) RETURNS numeric AS BEGIN RETURN (
  SELECT 
    SUM(
      DATEDIFF(second, PickupDate, DropOffDate)
    )/ 3600 
  FROM YellowTripData 
  WHERE 
    PickupDate > @StartDateParm 
    AND DropoffDate < @EndDateParm
) END;
在 SQL Server 中撰寫函式與預存程序

換你來建立 UDF!

在 SQL Server 中撰寫函式與預存程序

Preparing Video For Download...