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