Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- De te verwachten output IS volgens mij fout omdat een simpele SELECT op opnames ons leert dat er 5 verschillende datums zijn die maar 1 keer voorkomen. Er zijn dus meer dan 3 antwoorden.
- CREATE OR REPLACE
- PROCEDURE PERIODE_MINSTE_OPNAMES
- IS
- TYPE type_tab_datums IS TABLE OF opname.datum%TYPE
- INDEX BY PLS_INTEGER;
- t_datums type_tab_datums;
- TYPE type_tab_periodes IS TABLE OF periode%ROWTYPE
- INDEX BY PLS_INTEGER;
- t_periodes type_tab_periodes;
- t_periode_minste_opnames type_tab_periodes;
- teller NUMBER;
- BEGIN
- SELECT DISTINCT datum BULK COLLECT INTO t_datums
- FROM opname
- WHERE datum IS NOT NULL
- GROUP BY datum
- HAVING COUNT(datum) <= 1
- ORDER BY datum ASC;
- SELECT * BULK COLLECT INTO t_periodes
- FROM PERIODE;
- teller := 1;
- FOR i IN 1..t_datums.COUNT LOOP
- FOR j IN 1..t_periodes.COUNT LOOP
- IF t_datums(i) BETWEEN t_periodes(j).begindatum
- AND t_periodes(j).einddatum THEN
- SELECT * INTO t_periode_minste_opnames(teller)
- FROM periode
- WHERE periode.begindatum = t_periodes(j).begindatum
- AND periode.einddatum = t_periodes(j).einddatum
- AND periode.plaatsnaam = t_periodes(j).plaatsnaam;
- teller := teller + 1;
- END IF;
- END LOOP;
- END LOOP;
- FOR i IN 1..t_periode_minste_opnames.COUNT LOOP
- dbms_output.PUT_LINE(t_periode_minste_opnames(i).begindatum || ' ' ||
- t_periode_minste_opnames(i).einddatum || ' ' ||
- t_periode_minste_opnames(i).plaatsnaam);
- END LOOP;
- END PERIODE_MINSTE_OPNAMES;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement