Eksempler: Å lage funksjoner med MS SQL Server

Eksemplene bruker styrkeløftdatabasen min som utgangspunkt.
På den måten kan dere selv legge inn data og teste hvis dere ønsker det.

I)

Lister ut hvor mange kg en deltager har løftet på et stevne(ser på tyngste løft pr. øvelse)

CREATE FUNCTION get_totalkg(
  @stevneid INT,
  @deltagerid INT)
RETURNS INT
AS
BEGIN
  DECLARE @totalkg INT

  SELECT @totalkg = sum(max_kg)
    FROM resultat
    WHERE stevneid = @stevneid
    AND deltagerid = @deltagerid
    GROUP BY deltagerid

  RETURN @totalkg

END
  
Å kalle funksjonen(stevneid=1, deltagerid=1): select elinkaan.get_totalkg(1, 1) AS "Totalt løftet"

II)

Lister ut antallet deltagere på et gitt stevne

CREATE FUNCTION get_deltagerant(
  @stevneid INT)
RETURNS INT
AS
BEGIN
  DECLARE @deltagerant INT

  SELECT @deltagerant = count(deltagerid)
    FROM paamelding
    WHERE stevneid = @stevneid
    GROUP BY stevneid

  RETURN @deltagerant

END
  
Å kalle funksjonen(stevneid=4): select elinkaan.get_deltagerant(4) AS "Antall deltagere"

III)

Eksempel på hvordan man kan returnere en tabell fra en funksjon. Her listes det ut deltagerlister for et gitt stevne.
Legg også merke til dato-funksjonene som brukes.
Eks. IV er kun med for å vise en annen måte å håndtere dato på, ellers er de like. Legg inn data, og se hva som skjer!

CREATE FUNCTION get_deltagerliste(
  @stevneid INT)
RETURNS TABLE
AS
RETURN(
  SELECT d.deltagerid, d.navn, DateName(MONTH, d.fdato) + ' ' + DateNAme(dd, d.fdato) + ', ' + DateNAme(yyyy, d.fdato) as fdato, p.vekt, p.vektklasse, p.aldersklasse, k.navn as klubbnavn
    FROM paamelding p, deltager d, klubb k
    WHERE stevneid = @stevneid
    and p.deltagerid = d.deltagerid
    and p.klubbid = k.klubbid
)
  
Å kalle funksjonen(stevneid=1): select * from elinkaan.get_deltagerliste(1)

IV)

CREATE FUNCTION get_deltagerliste2(
  @stevneid INT)
RETURNS TABLE
AS
RETURN(
  SELECT d.deltagerid, d.navn,  RIGHT(CAST(100+DATEPART(DD,d.fdato) AS CHAR(3)),2) + '-' 
     + RIGHT(CAST(100+DATEPART(MM,d.fdato) AS CHAR(3)),2) + '-'
     + CAST(DATEPART(YYYY,d.fdato) AS CHAR(4)) as fdato, p.vekt, p.vektklasse, p.aldersklasse, k.navn as klubbnavn
    FROM paamelding p, deltager d, klubb k
    WHERE stevneid = @stevneid
    and p.deltagerid = d.deltagerid
    and p.klubbid = k.klubbid
)
  
Å kalle funksjonen(stevneid=1): select * from elinkaan.get_deltagerliste2(1)

Elin K. Ajer Andreassen, 2003