Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- ZAD 1
- DECLARE
- CURSOR C_PRAC(P_ETAT VARCHAR) IS SELECT NAZWISKO FROM PRACOWNICY WHERE ETAT = P_ETAT;
- V_ETAT PRACOWNICY.ETAT%TYPE;
- V_NAZWISKO PRACOWNICY.NAZWISKO%TYPE;
- BEGIN
- V_ETAT := '&ETAT';
- OPEN C_PRAC(V_ETAT);
- LOOP
- FETCH C_PRAC INTO V_NAZWISKO;
- EXIT WHEN C_PRAC%NOTFOUND;
- DBMS_OUTPUT.PUT_LINE(V_NAZWISKO);
- END LOOP;
- CLOSE C_PRAC;
- EXCEPTION
- WHEN NO_DATA_FOUND THEN
- DBMS_OUTPUT.PUT_LINE('NIE ISTNIEJE ETAT O NAZWIE: ' || V_ETAT);
- END;
- /
- -- ZAD 2
- DECLARE
- CURSOR C_PRAC
- IS SELECT NAZWISKO, PLACA_POD + PLACA_POD * 0.1 FROM PRACOWNICY WHERE ETAT = 'PROFESOR';
- V_NAZWISKO PRACOWNICY.NAZWISKO%TYPE;
- V_PLACA_POD PRACOWNICY.PLACA_POD%TYPE;
- BEGIN
- OPEN C_PRAC;
- LOOP
- FETCH C_PRAC INTO V_NAZWISKO, V_PLACA_POD;
- EXIT WHEN C_PRAC%NOTFOUND;
- IF (V_PLACA_POD > 2000) THEN
- RAISE_APPLICATION_ERROR(-20010, 'PENSJA PO PODWYŻCE PRZEKROCZYA BY 2000!');
- END IF;
- DBMS_OUTPUT.PUT_LINE(V_NAZWISKO || ' ' || V_PLACA_POD);
- END LOOP;
- CLOSE C_PRAC;
- END;
- /
- -- ZAD 3
- DECLARE
- V_ID_PRAC PRACOWNICY.ID_PRAC%TYPE;
- V_NAZWISKO PRACOWNICY.NAZWISKO%TYPE;
- V_ID_ZESP PRACOWNICY.ID_ZESP%TYPE;
- V_PLACA_POD PRACOWNICY.PLACA_POD%TYPE;
- ERR_NUM NUMBER;
- ERR_MSG VARCHAR(30);
- BEGIN
- V_ID_PRAC := '&ID_PRAC';
- V_NAZWISKO := '&V_NAZWISKO';
- V_PLACA_POD := '&V_PLACA_POD';
- V_ID_ZESP := '&V_ID_ZESP';
- INSERT INTO PRACOWNICY VALUES (V_ID_PRAC, V_NAZWISKO, NULL, NULL, NULL, V_PLACA_POD, NULL, V_ID_ZESP);
- EXCEPTION
- WHEN OTHERS THEN
- ERR_NUM := SQLCODE;
- IF (ERR_NUM = -1) THEN ERR_MSG := 'IDENTYFIKATORY SIĘ DUBLUJĄ!';
- ELSIF (ERR_NUM = -1400) THEN ERR_MSG := 'WARTOŚĆ IDENTYFIKATORA PUSTA!';
- ELSIF (ERR_NUM = -2290) THEN ERR_MSG := 'WARTOŚĆ PLACY MNIEJSZA NIŻ 101!';
- ELSIF (ERR_NUM = -2291) THEN ERR_MSG := 'PODANO NIEISTNIEJĄCY ZESPÓL!';
- END IF;
- DBMS_OUTPUT.PUT_LINE(ERR_MSG);
- END;
- /
- -- ZAD 4
- DECLARE
- V_NAZWISKO PRACOWNICY.NAZWISKO%TYPE;
- C_ILE_PRAC NUMBER;
- ERR_NUM NUMBER;
- BEGIN
- V_NAZWISKO := '&PODAJ_NAZWISKO';
- SELECT COUNT(*) INTO C_ILE_PRAC FROM PRACOWNICY WHERE NAZWISKO = V_NAZWISKO;
- IF ( C_ILE_PRAC = 0) THEN
- RAISE_APPLICATION_ERROR(-20020, 'NIE ISTNIEJE TAKI PRACOWNIK!');
- ELSIF ( C_ILE_PRAC > 1) THEN
- RAISE_APPLICATION_ERROR(-20030, 'NIEJEDNOZNACZNE WSKAZANIE PRACOWNIKA');
- END IF;
- DELETE FROM PRACOWNICY WHERE NAZWISKO = V_NAZWISKO;
- EXCEPTION
- WHEN OTHERS THEN
- ERR_NUM := SQLCODE;
- IF (ERR_NUM = -2992) THEN RAISE_APPLICATION_ERROR(-20040, 'NIE MOZESZ USUNAC PRZELOZONEGO!');
- END IF;
- END;
- /
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement