Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- SET SERVEROUTPUT ON
- CREATE OR REPLACE PACKAGE lab2 IS
- PROCEDURE zad_2a(nazwa VARCHAR2,min_placa VARCHAR2);
- FUNCTION zad_2b (id VARCHAR2) RETURN VARCHAR2;
- PROCEDURE zad_2c(imie VARCHAR2,nazwisko VARCHAR2, data_urodzenia VARCHAR2);
- FUNCTION zad_2d(id VARCHAR2,rok VARCHAR2) RETURN VARCHAR2;
- PROCEDURE zad_2e(rok VARCHAR2);
- PROCEDURE zad_2f(stanowisko VARCHAR2, rok VARCHAR2 DEFAULT '2017');
- PROCEDURE zad_2g;
- PROCEDURE zad_2h(imie_kier VARCHAR2, naz_kier VARCHAR2);
- PROCEDURE zad_2i(imie_k VARCHAR2, nazwisko_k VARCHAR2, stanowisko VARCHAR2);
- PROCEDURE zad_2j(stanowisko VARCHAR2);
- FUNCTION zad_2k(imie_k VARCHAR2, nazwisko_k VARCHAR2, rok_k VARCHAR2) RETURN VARCHAR2;
- END;
- /
- CREATE OR REPLACE PACKAGE BODY lab2 IS
- /* Napisz pakiet który b?dzie zawiera? poni?sze funkcje i procedury: */
- /* a)PROCEDURE zad_2a która b?dzie dodawa? stanowisko jako parametry wywo?ania podajemy nazw? i min place.*/
- PROCEDURE zad_2a(nazwa VARCHAR2,min_placa VARCHAR2) IS
- id stanowiska.id_st%TYPE;
- wyjatek_1 EXCEPTION;
- CURSOR kursor_1 IS SELECT stanowiska.nazwa_st FROM STANOWISKA;
- BEGIN
- SELECT MAX(stanowiska.id_st) INTO id FROM STANOWISKA;
- FOR i IN kursor_1
- LOOP
- IF i.Nazwa_st = nazwa THEN RAISE wyjatek_1;
- END IF;
- END LOOP;
- INSERT INTO STANOWISKA(id_st,Nazwa_st,Min_placa) VALUES (id+1,nazwa,TO_NUMBER(min_placa,9999));
- DBMS_OUTPUT.PUT_LINE('STANOWISKO:' || CHR(9) || nazwa || CHR(9) || 'ZOSTALO DODANE.');
- EXCEPTION
- WHEN wyjatek_1 THEN DBMS_OUTPUT.PUT_LINE('STANOWISKO JUZ ISTNIEJE!');
- WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE('WYSTAPIL INNY BLAD');
- END;
- /*b) FUNKCJE zad_2b która zwróci imi? i nazwisko kierownika podanej osoby.
- Jako parametr wywo?ania podajemy ID_Os. Sprawdzi? czy jest kierownik czy nie ma i czy jest dana osoba czy tez nie.
- np "Nie ma osoby" lub "Nie ma kierownika" b?d? tez Jan Kowalski.*/
- FUNCTION zad_2b (id VARCHAR2) RETURN VARCHAR2 IS
- id_prac NUMBER;
- id_kier NUMBER;
- wynik VARCHAR2(100);
- BEGIN
- SELECT CASE WHEN EXISTS (SELECT * FROM OSOBY WHERE osoby.id_os=id) THEN id ELSE NULL END INTO id_prac FROM DUAL;
- IF id_prac IS NULL THEN RETURN 'NIE MA OSOBY';
- END IF;
- SELECT osoby.id_kierownika INTO id_kier FROM OSOBY WHERE osoby.id_os=id;
- IF id_kier IS NULL THEN RETURN 'NIE MA KIEROWNIKA';
- END IF;
- SELECT UPPER(osoby.imie) || CHR(9) || UPPER(osoby.nazwisko) INTO wynik FROM Osoby WHERE osoby.id_os=id_kier;
- RETURN wynik;
- EXCEPTION
- WHEN OTHERS THEN RETURN 'WYSTAPIL INNY BLAD';
- END;
- /*c) PROCEDURE zad_2c dodaj?ca osob? do tabeli osoby
- jako parametry wywo?ania podajemy Imi?, Nazwisko, Data_ur (numer pracownika wyznaczany wyznaczamy).*/
- PROCEDURE zad_2c(imie VARCHAR2,nazwisko VARCHAR2, data_urodzenia VARCHAR2) IS
- id osoby.id_os%TYPE;
- imie_temp VARCHAR2(30);
- pl VARCHAR2(1);
- BEGIN
- SELECT MAX(osoby.id_os) INTO id FROM OSOBY;
- SELECT SUBSTR(imie,-1) INTO imie_temp FROM DUAL;
- IF imie_temp='a' THEN pl:='K';
- ELSE pl:='M';
- END IF;
- INSERT INTO OSOBY(id_os,Imie,Nazwisko,Data_ur,Plec) VALUES(id+1,imie,nazwisko,TO_DATE(data_urodzenia,'RR/MM/DD'),pl);
- DBMS_OUTPUT.PUT_LINE('DODANO DO BAZY OSOBE:' || CHR(9) || UPPER(imie) || CHR(9) || UPPER(nazwisko) || CHR(9) || data_urodzenia);
- EXCEPTION
- WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE('WYSTAPIL INNY BLAD');
- END;
- /*d) FUNKCJ? zad_2d która zwróci podatek jaki dana osoba ma zap?aci? za dany rok. */
- FUNCTION zad_2d(id VARCHAR2,rok VARCHAR2) RETURN VARCHAR2 IS
- id_prac osoby.id_os%TYPE;
- id_roku NUMBER;
- zarobek NUMBER(10,2);
- BEGIN
- SELECT CASE WHEN EXISTS (SELECT * FROM PLACE WHERE place.id_os=id) THEN id ELSE NULL END INTO id_prac FROM DUAL;
- IF id_prac IS NULL THEN RETURN 'PRACOWNIK NIE OTRZYMUJE PENSJI LUB NIE ISTNIEJE W BAZIE.';
- END IF;
- SELECT CASE WHEN EXISTS (SELECT * FROM PLACE WHERE EXTRACT(YEAR FROM place.data)=rok) THEN rok ELSE NULL END INTO id_roku FROM DUAL;
- IF id_roku IS NULL THEN RETURN 'ROK NIE WYSTEPUJE W BAZIE.';
- END IF;
- SELECT SUM(place.podstawa)+SUM(place.premia) INTO zarobek FROM PLACE WHERE place.id_os = id AND EXTRACT(YEAR FROM place.data)=rok;
- IF zarobek < 4000 THEN RETURN zarobek;
- END IF;
- IF zarobek >= 4000 AND zarobek <= 8700 THEN RETURN ROUND(0.19*zarobek,2);
- END IF;
- IF zarobek > 8700 THEN RETURN ROUND(0.3*zarobek,2);
- END IF;
- EXCEPTION
- WHEN OTHERS THEN RETURN 'WYSTAPIL INNY BLAD';
- END;
- /*e) PROCEDURE zad_2e która wy?wietli raport o wszystkich pracownikach
- którzy pracowali w danym roku, jako parametry wywo?ania podajemy rok.*/
- PROCEDURE zad_2e (rok VARCHAR2) IS
- CURSOR kursor_1 IS SELECT osoby.id_os, osoby.imie, osoby.nazwisko, stanowiska.nazwa_st, etaty.data_zat, etaty.data_zw FROM ETATY,OSOBY,STANOWISKA
- WHERE etaty.id_os = osoby.id_os AND stanowiska.id_st = etaty.id_st ORDER BY osoby.id_os;
- rok_min NUMBER;
- rok_max NUMBER;
- wyjatek_1 EXCEPTION;
- BEGIN
- SELECT MIN(EXTRACT(YEAR FROM data_zat)) INTO rok_min FROM ETATY;
- IF rok < rok_min THEN RAISE wyjatek_1;
- END IF;
- DBMS_OUTPUT.PUT_LINE('PRACOWNICY PRACUJACY W ROKU:' || CHR(9) || rok ||' .');
- DBMS_OUTPUT.PUT_LINE(CHR(9));
- FOR i IN kursor_1
- LOOP
- IF i.data_zw IS NOT NULL THEN
- IF EXTRACT(YEAR FROM TO_DATE(rok,'YYYY')) <= EXTRACT(YEAR FROM i.data_zw) AND EXTRACT(YEAR FROM TO_DATE(rok,'YYYY')) >= EXTRACT(YEAR FROM i.data_zat) THEN
- DBMS_OUTPUT.PUT_LINE(i.imie || CHR(9) || i.nazwisko || CHR(9) || i.nazwa_st || CHR(9) || i.data_zat || CHR(9) || i.data_zw);
- END IF;
- ELSIF EXTRACT(YEAR FROM i.data_zat)<=EXTRACT(YEAR FROM TO_DATE(rok,'YYYY')) THEN
- DBMS_OUTPUT.PUT_LINE(UPPER(i.imie) || CHR(9) || UPPER(i.nazwisko) || CHR(9) || UPPER(i.nazwa_st) || CHR(9) || i.data_zat);
- END IF;
- END LOOP;
- EXCEPTION
- WHEN wyjatek_1 THEN DBMS_OUTPUT.PUT_LINE('ROK NIE WYSTEPUJE W BAZIE');
- WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE('WYSTAPIL INNY BLAD');
- END;
- /*f) PROCEDURE zad_2f która wy?wietli? kto pracowa? na podanym stanowisku w danym roku
- gdzie rok je?li nie podano ustawi? na warto?? domy?lna 2017.*/
- PROCEDURE zad_2f(stanowisko VARCHAR2, rok VARCHAR2 DEFAULT '2017') IS
- CURSOR kursor_1 IS SELECT osoby.id_os, osoby.imie, osoby.nazwisko, stanowiska.nazwa_st, etaty.data_zat, etaty.data_zw FROM ETATY,OSOBY,STANOWISKA
- WHERE etaty.id_os = osoby.id_os AND stanowiska.id_st = etaty.id_st AND stanowiska.nazwa_st = stanowisko ORDER BY osoby.id_os;
- naz_stanowiska VARCHAR2(100);
- rok_min NUMBER;
- wyjatek_1 EXCEPTION;
- wyjatek_2 EXCEPTION;
- BEGIN
- SELECT MIN(EXTRACT(YEAR FROM data_zat)) INTO rok_min FROM ETATY;
- IF TO_NUMBER(rok,9999) < rok_min THEN RAISE wyjatek_1;
- END IF;
- SELECT CASE WHEN EXISTS (SELECT * FROM STANOWISKA WHERE stanowiska.nazwa_st = stanowisko) THEN stanowisko ELSE NULL END INTO naz_stanowiska FROM DUAL;
- IF naz_stanowiska IS NULL THEN RAISE wyjatek_2;
- END IF;
- DBMS_OUTPUT.PUT_LINE('PRACOWNICY PRACUJACY W ROKU:' || CHR(9) || TO_NUMBER(rok,9999) ||' .');
- DBMS_OUTPUT.PUT_LINE(CHR(9));
- FOR i IN kursor_1
- LOOP
- IF i.data_zw IS NOT NULL THEN
- IF EXTRACT(YEAR FROM TO_DATE(rok,'YYYY')) <= EXTRACT(YEAR FROM i.data_zw) AND EXTRACT(YEAR FROM TO_DATE(rok,'YYYY')) >= EXTRACT(YEAR FROM i.data_zat) THEN
- DBMS_OUTPUT.PUT_LINE(UPPER(i.imie) || CHR(9) || UPPER(i.nazwisko) || CHR(9) || UPPER(i.nazwa_st) || CHR(9) || i.data_zat || CHR(9) || i.data_zw);
- END IF;
- ELSIF EXTRACT(YEAR FROM i.data_zat)<=EXTRACT(YEAR FROM TO_DATE(rok,'YYYY')) THEN DBMS_OUTPUT.PUT_LINE(UPPER(i.imie) || CHR(9) || UPPER(i.nazwisko) || CHR(9) || UPPER(i.nazwa_st) || CHR(9) || i.data_zat);
- END IF;
- END LOOP;
- EXCEPTION
- WHEN wyjatek_1 THEN DBMS_OUTPUT.PUT_LINE('ROK NIE ISTNIEJE');
- WHEN wyjatek_2 THEN DBMS_OUTPUT.PUT_LINE('STANOWISKO NIE ISTNIEJE');
- WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE('WYSTAPIL INNY BLAD');
- END;
- /*g) PROCEDURE zad_2g która wy?wietli raport z zarobków danych osób z podzieleniem na lata
- i na ko?cu wstawi ko?cowe saldo zarobionych pieni?dzy w firmie.*/
- PROCEDURE zad_2g IS
- suma_za_rok NUMBER(10,2);
- suma_pensja NUMBER(10,2);
- suma_wszystko NUMBER(10,2);
- min_data NUMBER;
- max_data NUMBER;
- BEGIN
- SELECT MIN(EXTRACT(YEAR FROM place.data)) INTO min_data FROM PLACE;
- SELECT MAX(EXTRACT(YEAR FROM place.data)) INTO max_data FROM PLACE;
- DBMS_OUTPUT.PUT_LINE('RAPORT Z PLAC DNIA:' || CHR(9) || TO_CHAR(SYSDATE,'DD-MM-RRRR'));
- FOR i IN (SELECT * FROM OSOBY)
- LOOP
- suma_wszystko:=0;
- DBMS_OUTPUT.PUT_LINE(CHR(9));
- DBMS_OUTPUT.PUT_LINE(CHR(9));
- DBMS_OUTPUT.PUT_LINE('IMIE' || CHR(9) || 'NAZWISKO' || CHR(9) || 'DATA URODZENIA');
- DBMS_OUTPUT.PUT_LINE(UPPER(i.imie) || CHR(9) || UPPER(i.nazwisko) || CHR(9) || TO_CHAR(i.data_ur,'DD-MM-RRRR'));
- DBMS_OUTPUT.PUT_LINE(CHR(9));
- FOR rok IN min_data..max_data
- LOOP
- suma_za_rok:=0;
- DBMS_OUTPUT.PUT_LINE('PLACE ZA ROK:' || CHR(9) || rok);
- DBMS_OUTPUT.PUT_LINE('DATA' || CHR(9) || 'PODSTAWA' || CHR(9) || 'PREMIA' || CHR(9) || 'RAZEM');
- FOR j IN (SELECT * FROM PLACE WHERE place.id_os = i.id_os AND EXTRACT(YEAR FROM place.data) = rok)
- LOOP
- suma_pensja := j.podstawa + NVL(j.premia,0);
- suma_za_rok := suma_za_rok + suma_pensja;
- suma_wszystko := suma_wszystko + suma_pensja;
- DBMS_OUTPUT.PUT_LINE(j.data || CHR(9) || j.podstawa || CHR(9) || (NVL(j.premia,0)) || CHR(9) || suma_pensja);
- END LOOP;
- IF suma_za_rok>0 THEN
- DBMS_OUTPUT.PUT_LINE(CHR(9));
- DBMS_OUTPUT.PUT_LINE('SUMA ZA ROK:' || CHR(9) || rok || ':' || CHR(9) || suma_za_rok);
- END IF;
- END LOOP;
- DBMS_OUTPUT.PUT_LINE(CHR(9));
- DBMS_OUTPUT.PUT_LINE('SUMA ZA WSZYSTKIE LATA:' || CHR(9) || suma_wszystko);
- END LOOP;
- EXCEPTION
- WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE('WYSTAPIL INNY BLAD');
- END;
- /*h) PROCEDUR? zad_2h która wy?wietli sk?ady zespo?ów dla danego kierownika.
- Kierownika przekazujemy jako parametr wywo?ania podajemy imi? i nazwisko.*/
- PROCEDURE zad_2h (imie_kier VARCHAR2, naz_kier VARCHAR2) IS
- naz_kier_temp VARCHAR2(100);
- imie_kier_temp VARCHAR2(100);
- wyjatek_1 EXCEPTION;
- CURSOR kursor_1 IS SELECT * FROM OSOBY WHERE osoby.id_kierownika = (SELECT osoby.id_os FROM OSOBY
- WHERE osoby.imie = imie_kier AND osoby.nazwisko = naz_kier);
- BEGIN
- SELECT CASE WHEN EXISTS (SELECT * FROM OSOBY WHERE osoby.nazwisko = naz_kier AND osoby.imie = imie_kier) THEN imie_kier ELSE NULL END INTO imie_kier_temp FROM DUAL;
- IF imie_kier_temp IS NULL THEN RAISE wyjatek_1;
- END IF;
- DBMS_OUTPUT.PUT_LINE('ZESPOL KIEROWNIKA:' || CHR(9) || imie_kier || CHR(9) || naz_kier);
- DBMS_OUTPUT.PUT_LINE(CHR(9));
- FOR i IN kursor_1
- LOOP
- DBMS_OUTPUT.PUT_LINE('PRACOWNIK:' || CHR(9) || i.imie || CHR(9) || i.nazwisko);
- END LOOP;
- EXCEPTION
- WHEN wyjatek_1 THEN DBMS_OUTPUT.PUT_LINE('OSOBA NIE ISTNIEJE');
- WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE('WYSTAPIL INNY BLAD');
- END;
- /*i) PROCEDUR? zad_2i która b?dzie dodawa?a etat dla podanej osoby.
- W procedurze nale?y sprawdzi? czy dany pracownik ma uko?czone 18 lat i czy nie przekracza pe?nego etatu w naszej firmie.*/
- PROCEDURE zad_2i(imie_k VARCHAR2, nazwisko_k VARCHAR2, stanowisko VARCHAR2) IS
- id_osoby NUMBER;
- id_stanowiska NUMBER;
- id_etatu NUMBER;
- data_urodzenia DATE;
- imie_k_temp VARCHAR2(100);
- naz_stanowiska VARCHAR2(100);
- etat_temp NUMBER;
- wyjatek_1 EXCEPTION;
- wyjatek_2 EXCEPTION;
- wyjatek_3 EXCEPTION;
- wyjatek_4 EXCEPTION;
- BEGIN
- SELECT CASE WHEN EXISTS (SELECT * FROM OSOBY WHERE osoby.imie = imie_k AND osoby.nazwisko = nazwisko_k) THEN imie_k ELSE NULL END INTO imie_k_temp FROM DUAL;
- IF imie_k_temp IS NULL THEN RAISE wyjatek_3;
- END IF;
- SELECT CASE WHEN EXISTS (SELECT * FROM STANOWISKA WHERE stanowiska.nazwa_st = stanowisko) THEN stanowisko ELSE NULL END INTO naz_stanowiska FROM DUAL;
- IF naz_stanowiska IS NULL THEN RAISE wyjatek_4;
- END IF;
- SELECT osoby.id_os,osoby.data_ur INTO id_osoby,data_urodzenia FROM OSOBY WHERE osoby.imie = imie_k AND osoby.nazwisko = nazwisko_k;
- SELECT MAX(etaty.id_e) INTO id_etatu FROM ETATY;
- SELECT stanowiska.id_st INTO id_stanowiska FROM STANOWISKA WHERE stanowiska.nazwa_st = stanowisko;
- IF(EXTRACT(YEAR FROM SYSDATE)-EXTRACT(YEAR FROM data_urodzenia))<18 THEN RAISE wyjatek_1;
- END IF;
- FOR i IN (SELECT * FROM ETATY)
- LOOP
- IF i.id_os = id_osoby AND i.id_st = id_stanowiska THEN RAISE wyjatek_2;
- END IF;
- END LOOP;
- INSERT INTO ETATY(id_e,id_os,id_st,data_zat,data_zw) VALUES (id_etatu+1,id_osoby,id_stanowiska,TO_DATE(SYSDATE,'RRRR-MM-DD'),NULL);
- DBMS_OUTPUT.PUT_LINE('DODANO OSOBE:' || CHR(9) || UPPER(imie_k) || CHR(9) || UPPER(nazwisko_k) || CHR(9) || 'NA STANOWISKO:' || CHR(9) || UPPER(stanowisko) ||'.');
- EXCEPTION
- WHEN wyjatek_1 THEN DBMS_OUTPUT.PUT_LINE('OSOBA MA MNIEJ NIZ 18 LAT');
- WHEN wyjatek_2 THEN DBMS_OUTPUT.PUT_LINE('OSOBA PRZEKRACZA PELNY ETAT!');
- WHEN wyjatek_3 THEN DBMS_OUTPUT.PUT_LINE('OSOBA NIE WYSTEPUJE W BAZIE!');
- WHEN wyjatek_4 THEN DBMS_OUTPUT.PUT_LINE('STANOWISKO NIE WYSTEPUJE W BAZIE!');
- WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE('WYSTAPIL INNY BLAD!');
- END;
- /*j) PROCEDUR? zad_2j która wy?wietli pe?ne informacje o pracownikach na podanym stanowisku
- (kto od kiedy pracuje ile zarabia itd. Mo?na wykorzysta? funkcje z nast?pnego zadania).*/
- PROCEDURE zad_2j(stanowisko VARCHAR2) IS
- CURSOR kursor_1 IS SELECT osoby.id_os,osoby.imie, osoby.nazwisko, etaty.data_zat FROM OSOBY,ETATY,STANOWISKA
- WHERE osoby.id_os = etaty.id_os AND stanowiska.id_st = etaty.id_st AND stanowiska.nazwa_st = stanowisko ORDER BY osoby.id_os;
- zarobek NUMBER;
- naz_stanowiska VARCHAR2(100);
- wyjatek_1 EXCEPTION;
- BEGIN
- SELECT CASE WHEN EXISTS (SELECT * FROM STANOWISKA WHERE stanowiska.nazwa_st = stanowisko) THEN stanowisko ELSE NULL END INTO naz_stanowiska FROM DUAL;
- IF naz_stanowiska IS NULL THEN RAISE wyjatek_1;
- END IF;
- DBMS_OUTPUT.PUT_LINE('DANE DLA STANOWISKA:' || CHR(9) || stanowisko);
- DBMS_OUTPUT.PUT_LINE('IMIE' || CHR(9) || 'NAZWISKO' || CHR(9) || CHR(9) || CHR(9) || CHR(9) ||'DATA ZATRUDNIENIA' || CHR(9) || 'ZAROBEK');
- FOR i IN kursor_1
- LOOP
- SELECT SUM(place.podstawa)+SUM(NVL(place.premia,0)) INTO zarobek FROM PLACE WHERE place.id_os = i.id_os;
- DBMS_OUTPUT.PUT_LINE(i.imie || CHR(9) || i.nazwisko || CHR(9) || CHR(9) || CHR(9) || CHR(9) || CHR(9) || CHR(9) || i.data_zat || CHR(9) || CHR(9) || CHR(9) || CHR(9) || CHR(9) || zarobek);
- END LOOP;
- EXCEPTION
- WHEN wyjatek_1 THEN DBMS_OUTPUT.PUT_LINE('STANOWISKO NIE ISTNIEJE');
- WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE('WYSTAPIL INNY BLAD');
- END;
- /*k) Funkcja która zwróci ile dana osoba zarobi?a w danym roku.*/
- FUNCTION zad_2k(imie_k VARCHAR2, nazwisko_k VARCHAR2, rok_k VARCHAR2) RETURN VARCHAR2 IS
- zarobek NUMBER(10,2);
- imie_k_temp VARCHAR2(100);
- rok_k_temp NUMBER;
- wyjatek_1 EXCEPTION;
- wyjatek_2 EXCEPTION;
- BEGIN
- SELECT CASE WHEN EXISTS (SELECT * FROM OSOBY WHERE osoby.imie = imie_k AND osoby.nazwisko = nazwisko_k) THEN imie_k ELSE NULL END INTO imie_k_temp FROM DUAL;
- SELECT CASE WHEN EXISTS (SELECT * FROM PLACE WHERE EXTRACT(YEAR FROM place.data) = rok_k) THEN rok_k ELSE NULL END INTO rok_k_temp FROM DUAL;
- IF imie_k_temp IS NULL THEN RAISE wyjatek_1;
- END IF;
- IF rok_k_temp IS NULL THEN RAISE wyjatek_2;
- END IF;
- SELECT SUM(place.podstawa)+SUM(NVL(place.premia,0)) INTO zarobek FROM PLACE,OSOBY
- WHERE osoby.imie = imie_k AND osoby.nazwisko = nazwisko_k AND osoby.id_os = place.id_os
- AND EXTRACT(YEAR FROM place.data) = rok_k;
- RETURN zarobek;
- EXCEPTION
- WHEN wyjatek_1 THEN RETURN 'OSOBA NIE ISTNIEJE';
- WHEN wyjatek_2 THEN RETURN 'ROK NIE ISTNIEJE';
- WHEN OTHERS THEN RETURN 'WYSTAPIL INNY BLAD';
- END;
- END;
- /
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement