Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- CREATE OR REPLACE FUNCTION CzyZdalWszystkie (idStudent VARCHAR, liczbaPrzedmiotow NUMBER) RETURN BOOLEAN IS
- lEgz NUMBER;
- BEGIN
- SELECT COUNT(DISTINCT id_przedmiot) INTO lEgz FROM egzaminy WHERE id_student = idStudent AND zdal = 'T';
- IF lEgz = liczbaPrzedmiotow THEN
- RETURN TRUE;
- ELSE RETURN FALSE;
- END IF;
- END CzyZdalWszystkie;
- /
- CREATE OR REPLACE PROCEDURE weryfikacjaECDL IS
- CURSOR CS IS SELECT id_student, nr_ecdl FROM studenci FOR UPDATE;
- tmp BOOLEAN;
- LiczbaPrzedmiotowDoZdania NUMBER;
- BEGIN
- SELECT COUNT(*) INTO LiczbaPrzedmiotowDoZdania FROM Przedmioty;
- FOR vC IN CS LOOP
- tmp := CzyZdalWszystkie(vC.id_student, LiczbaPrzedmiotowDoZdania);
- IF tmp THEN
- IF vC.id_student = vC.nr_ecdl THEN
- DBMS_OUTPUT.Put_line(vC.id_student || ' Poprawna wartość');
- ELSE
- DBMS_OUTPUT.Put_line(vC.id_student || ' Niepoprawna wartość lub jej brak');
- END IF;
- ELSE
- -- nullujemy wartość
- IF vC.nr_ecdl IS NOT NULL THEN
- DBMS_OUTPUT.Put_line(vC.id_student || ' Niepoprawna wartość - należy wyczyścić!');
- UPDATE studenci SET nr_ecdl = NULL
- WHERE CURRENT OF CS;
- END IF;
- END IF;
- END LOOP;
- END weryfikacjaECDL;
- /
- BEGIN
- weryfikacjaECDL;
- END;
- --UPDATE studenci SET nr_ecdl = '12345' WHERE id_student = '0000006';
- --select count(*) from egzaminy where id_student='02'
- --select * from studenci
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement