Skalární uživatelsky definované funkce

Psaní funkcí a uložených procedur v SQL Serveru

Meghan Kwartler

IT Consultant

Uživatelsky definované funkce (UDF)

Co jsou?

Rutiny, které

  • Mohou přijímat vstupní parametry
  • Provádějí akci
  • Vrací výsledek (skalární hodnotu nebo tabulku)

Proč je používat?

  • Mohou zkrátit dobu provádění
  • Mohou snížit síťový provoz
  • Umožňují modulární programování
Psaní funkcí a uložených procedur v SQL Serveru

Co je modulární programování?

  • Technika návrhu softwaru
  • Rozděluje funkcionalitu do nezávislých, zaměnitelných modulů
  • Umožňuje znovupoužití kódu
  • Zlepšuje čitelnost kódu
Psaní funkcí a uložených procedur v SQL Serveru

Funkce v receptech

Příklad modulárního programování v receptu

Psaní funkcí a uložených procedur v SQL Serveru

Vstupní parametry funkce pečení

Vstupní parametry funkce pečení

Psaní funkcí a uložených procedur v SQL Serveru

Skalární UDF bez vstupního parametru

-- Scalar function with no input parameters
CREATE FUNCTION GetTomorrow()
    RETURNS date AS BEGIN
RETURN (SELECT DATEADD(day, 1, GETDATE()))
END
Psaní funkcí a uložených procedur v SQL Serveru

Skalární UDF s jedním parametrem

-- 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;
Psaní funkcí a uložených procedur v SQL Serveru

Skalární UDF se dvěma vstupními parametry

-- 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;
Psaní funkcí a uložených procedur v SQL Serveru

Nyní je řada na vás – vytvořte UDF!

Psaní funkcí a uložených procedur v SQL Serveru

Preparing Video For Download...