Funções definidas pelo usuário escalares

Escrevendo Funções e Procedures no SQL Server

Meghan Kwartler

IT Consultant

Funções definidas pelo usuário (UDFs)

O quê?

Rotinas que

  • Podem receber parâmetros de entrada
  • Executam uma ação
  • Retornam resultado (um valor escalar ou uma tabela)

Por quê?

  • Podem reduzir o tempo de execução
  • Podem reduzir o tráfego de rede
  • Permitem Programação Modular
Escrevendo Funções e Procedures no SQL Server

O que é programação modular?

  • Técnica de design de software
  • Separa funcionalidades em módulos independentes e intercambiáveis
  • Permite reuso de código
  • Melhora a legibilidade do código
Escrevendo Funções e Procedures no SQL Server

Funções em receitas

Funções em receitas

Escrevendo Funções e Procedures no SQL Server

Parâmetros de entrada da função Bake

Parâmetros de entrada da função Bake

Escrevendo Funções e Procedures no SQL Server

UDF escalar sem parâmetro de entrada

-- Scalar function with no input parameters
CREATE FUNCTION GetTomorrow()
    RETURNS date AS BEGIN
RETURN (SELECT DATEADD(day, 1, GETDATE()))
END
Escrevendo Funções e Procedures no SQL Server

UDF escalar com um parâmetro

-- 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;
Escrevendo Funções e Procedures no SQL Server

UDF escalar com dois parâmetros de entrada

-- 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;
Escrevendo Funções e Procedures no SQL Server

Sua vez de criar UDFs!

Escrevendo Funções e Procedures no SQL Server

Preparing Video For Download...