-- Lag en funksjon som returnerer 1 om en bestilling_id (bid) IKKE har krav på rabatt, returnerer 0.8 hvis de har det CREATE OR REPLACE FUNCTION rabatt(bestillings_id NUMBER) RETURN NUMBER IS v_temp NUMBER; BEGIn SELECT COUNT(*) INTO v_temp FROM bestilling WHERE bid = bestillings_id; IF v_temp = 0 THEN RETURN 1; END IF; SELECT COUNT(*) INTO v_temp FROM bestillingslinje a, bestillingslinje b, bestillingslinje c WHERE a.bid = bestillings_id AND b.bid = bestillings_id AND c.bid = bestillings_id AND a.pnr = SOME(1,2,3) AND b.pnr = SOME(4) AND c.pnr = SOME(5,6) ; IF v_temp > 0 THEN RETURN 0.8; END IF; RETURN 1; END; / -- Lag view som viser hva kunden må betale CREATE OR REPLACE VIEW faktura AS SELECT k.navn, SUM(p.pris*(rabatt(b.bid))) sum FROM kunder k, produkt p, bestilling b, bestillingslinje bl WHERE k.knr = b.knr AND b.bid = bl.bid AND bl.pnr = p.pnr GROUP BY k.navn;