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