यूज़र-डिफ़ाइंड फ़ंक्शंस का रखरखाव

SQL Server में फंक्शंस और स्टोरड प्रोसीजर्स लिखना

Meghan Kwartler

IT Consultant

ALTER Function

ALTER FUNCTION SumLocationStats (@EndDate as datetime = '1/01/2017')
RETURNS TABLE AS RETURN 
SELECT 
  PULocationID as PickupLocation, 
  COUNT(ID) as RideCount, 
  SUM(TripDistance) as TotalTripDistance 
FROM YellowTripData 
WHERE CAST(DropOffDate as Date) = @EndDate 
GROUP BY PULocationID;
SQL Server में फंक्शंस और स्टोरड प्रोसीजर्स लिखना

CREATE OR ALTER

CREATE OR ALTER FUNCTION SumLocationStats (
 @EndDate AS datetime = '1/01/2017') 
 RETURNS TABLE AS RETURN 
SELECT 
  PULocationID as PickupLocation, 
  COUNT(ID) AS RideCount, 
  SUM(TripDistance) AS TotalTripDistance 
FROM YellowTripData 
WHERE CAST(DropOffDate AS Date) = @EndDate 
GROUP BY PULocationID;
SQL Server में फंक्शंस और स्टोरड प्रोसीजर्स लिखना
-- Delete function
DROP FUNCTION dbo.CountTripAvgFareDay
-- Create CountTripAvgFareDay as Inline TVF instead of MSTVF
CREATE FUNCTION dbo.CountTripAvgFareDay(
  @Month char(2), 
  @Year char(4)
) RETURNS TABLE AS RETURN (
  SELECT 
    CAST(DropOffDate as date) as DropOffDate, 
    COUNT(ID) as TripCount, 
    AVG(FareAmount) as AvgFareAmt 
  FROM YellowTripData 
  WHERE 
    DATEPART(month, DropOffDate) = @Month 
    AND DATEPART(year, DropOffDate) = @Year 
  GROUP BY CAST(DropOffDate as date));
SQL Server में फंक्शंस और स्टोरड प्रोसीजर्स लिखना

Determinism से प्रदर्शन बेहतर होता है

  • कोई फ़ंक्शन deterministic होता है जब वह लौटाता है:
    • वही इनपुट पैरामीटर्स पर वही परिणाम
    • वही डेटाबेस स्थिति में वही परिणाम
SQL Server में फंक्शंस और स्टोरड प्रोसीजर्स लिखना
SELECT 
  OBJECTPROPERTY(
    OBJECT_ID('[dbo].[GetRideHrsOneDay]'), 
    'IsDeterministic'
  )
+---+
| 1 |
+---+
SELECT 
  OBJECTPROPERTY(
    OBJECT_ID('[dbo].[GetTomorrow]'), 
    'IsDeterministic'
  )
+---+
| 0 |
+---+
SQL Server में फंक्शंस और स्टोरड प्रोसीजर्स लिखना

Schemabinding

  • स्कीमा को उन डेटाबेस ऑब्जेक्ट्स से बाँधता है जिन्हें यह संदर्भित करता है.
  • यदि schema-bound ऑब्जेक्ट्स इसे संदर्भित कर रहे हों तो स्कीमा में बदलाव रोकता है.
CREATE OR ALTER FUNCTION dbo.GetRideHrsOneDay (@DateParm date)
RETURNS numeric WITH SCHEMABINDING
AS
BEGIN
RETURN 
(SELECT SUM(DATEDIFF(second, PickupDate, DropoffDate))/3600
FROM dbo.YellowTripData
WHERE CONVERT (date, PickupDate) = @DateParm)
END;
SQL Server में फंक्शंस और स्टोरड प्रोसीजर्स लिखना

अभ्यास करते हैं!

SQL Server में फंक्शंस और स्टोरड प्रोसीजर्स लिखना

Preparing Video For Download...