Скалярные пользовательские функции

Написание функций и хранимых процедур в SQL Server

Meghan Kwartler

IT Consultant

Пользовательские функции (UDF)

Что это?

Процедуры, которые

  • Принимают входные параметры
  • Выполняют действие
  • Возвращают результат (скалярное значение или таблицу)

Зачем?

  • Сокращают время выполнения
  • Снижают сетевой трафик
  • Поддерживают модульное программирование
Написание функций и хранимых процедур в SQL Server

Что такое модульное программирование?

  • Техника проектирования программного обеспечения
  • Разделяет функциональность на независимые взаимозаменяемые модули
  • Позволяет повторно использовать код
  • Повышает читаемость кода
Написание функций и хранимых процедур в SQL Server

Функции в рецептах

Рецепт модульного программирования, глава 2

Написание функций и хранимых процедур в SQL Server

Входные параметры функции выпечки

Входные параметры функции выпечки, глава 2

Написание функций и хранимых процедур в 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...