Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- f) PROCEDURE która wyświetlić kto pracował na podanym stanowisku w danym roku gdzie rok jeśli nie podano ustawić na wartość domyślna 2012.*/
- CREATE OR REPLACE PROCEDURE stanowiskowroku(p_rok VARCHAR2, p_stanowisko VARCHAR2) IS
- rok NUMBER(4);
- CURSOR pracownicy IS
- SELECT DISTINCT *
- FROM etaty
- WHERE (EXTRACT(YEAR FROM data_zat) <= rok AND EXTRACT(YEAR FROM data_zw) >= rok) OR (EXTRACT(YEAR FROM data_zat) <= rok AND data_zw IS NULL);
- pracownik VARCHAR2(100);
- ilosc NUMBER(2);
- stanowisko VARCHAR2(20);
- BEGIN
- IF p_rok IS NULL THEN rok := 2012; ELSE rok := p_rok; END IF;
- SELECT count(*)
- INTO ilosc
- FROM stanowiska
- WHERE nazwa_st = p_stanowisko;
- IF(ilosc > 0) THEN
- DBMS_OUTPUT.PUT_LINE('W roku ' || rok || ' na stanowisku ' || p_stanowisko || ' pracowali:');
- FOR p IN pracownicy LOOP
- SELECT nazwa_st INTO stanowisko FROM stanowiska WHERE id_st = p.id_st;
- IF(stanowisko = p_stanowisko) THEN
- SELECT imie || ' ' || nazwisko
- INTO pracownik
- FROM osoby
- WHERE id_os = p.id_os;
- DBMS_OUTPUT.PUT_LINE(pracownik);
- END IF;
- END LOOP;
- ELSE DBMS_OUTPUT.PUT_LINE('Takie stanowisko nie istnieje');
- END IF;
- END;
- /
- /*g) PROCEDURE 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 */
- CREATE OR REPLACE PROCEDURE raport IS
- CURSOR pracownicy IS SELECT * FROM osoby;
- p_place place%ROWTYPE;
- ilosc NUMBER(2);
- suma NUMBER(10,2);
- sumazarok NUMBER(10,2);
- sumazawszystko NUMBER(10,2);
- BEGIN
- DBMS_OUTPUT.PUT_LINE('Raport z plac z dnia ' || TO_CHAR(SYSDATE, 'DD.MM.YYYY'));
- FOR p IN pracownicy LOOP
- sumazawszystko := 0;
- DBMS_OUTPUT.PUT_LINE('Imie' || CHR(9) || 'Nazwisko' || CHR(9) || 'Data urodzenia');
- DBMS_OUTPUT.PUT_LINE(p.imie || CHR(9) || p.nazwisko || CHR(9) || TO_CHAR(p.data_ur, 'DD.MM.YYYY'));
- FOR rok in 2000..EXTRACT(YEAR FROM SYSDATE) LOOP
- sumazarok := 0;
- SELECT count(*) INTO ilosc FROM place WHERE id_os = p.id_os AND EXTRACT(YEAR FROM data) = rok;
- IF(ilosc > 0) THEN
- DBMS_OUTPUT.PUT_LINE('Place za rok ' || rok);
- DBMS_OUTPUT.PUT_LINE('Data' || CHR(9) || 'Podstawa' || CHR(9) || 'Premia' || CHR(9) || 'Razem');
- FOR a IN (SELECT * FROM place WHERE id_os = p.id_os AND EXTRACT(YEAR FROM data) = rok) LOOP
- suma := a.podstawa + NVL(a.premia, 0);
- DBMS_OUTPUT.PUT_LINE(a.data || CHR(9) || a.podstawa || CHR(9) || NVL(a.premia, 0) || CHR(9) || suma);
- sumazarok := sumazarok + suma;
- sumazawszystko := sumazawszystko + suma;
- END LOOP;
- END IF;
- IF(sumazarok > 0) THEN DBMS_OUTPUT.PUT_LINE('Suma za rok ' || rok || ': ' || sumazarok); END IF;
- END LOOP;
- DBMS_OUTPUT.PUT_LINE('Suma za wszystkie lata: ' || sumazawszystko);
- END LOOP;
- END;
- /
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement