UDF แบบ Table Valued

การเขียนฟังก์ชันและ Stored Procedures ใน SQL Server

Meghan Kwartler

IT Consultant

Inline table valued functions (ITVF)

CREATE FUNCTION SumLocationStats (
  @StartDate AS datetime = '1/1/2017'
) RETURNS TABLE AS RETURN 
SELECT 
  PULocationID AS PickupLocation, 
  COUNT(ID) AS RideCount, 
  SUM(TripDistance) AS TotalTripDistance 
FROM YellowTripData 
WHERE CAST(PickupDate AS Date) = @StartDate 
GROUP BY PULocationID;
การเขียนฟังก์ชันและ Stored Procedures ใน SQL Server
CREATE FUNCTION CountTripAvgFareDay (
  @Month char(2), 
  @Year char(4)
) RETURNS @TripCountAvgFare TABLE(
  DropOffDate date, TripCount int, AvgFare numeric
) AS BEGIN INSERT INTO @TripCountAvgFare 
SELECT 
  CAST(DropOffDate as date), 
  COUNT(ID), 
  AVG(FareAmount) as AvgFareAmt 
FROM YellowTripData 
WHERE 
  DATEPART(month, DropOffDate) = @Month 
  AND DATEPART(year, DropOffDate) = @Year 
GROUP BY CAST(DropOffDate as date)
RETURN END;
การเขียนฟังก์ชันและ Stored Procedures ใน SQL Server

ความแตกต่าง — ITVF vs. MSTVF

Inline

  • RETURN ผลลัพธ์จาก SELECT
  • ชื่อคอลัมน์ของตารางอยู่ใน SELECT
  • ไม่มี table variable
  • ไม่จำเป็นต้องใช้ BEGIN END
  • ไม่มี INSERT
  • ประสิทธิภาพเร็วกว่า

Multi statement

  • DECLARE table variable ที่จะ RETURN
  • ต้องมีบล็อก BEGIN END
  • INSERT ข้อมูลเข้า table variable
  • RETURN เป็น statement สุดท้ายใน BEGIN/END
การเขียนฟังก์ชันและ Stored Procedures ใน SQL Server

มาฝึกกันเถอะ!

การเขียนฟังก์ชันและ Stored Procedures ใน SQL Server

Preparing Video For Download...