bd2!1A

POLITECHNIKA ŚWIĘTOKRZYSKA
Bazy danych 2

Zespół: id27

Banasik Michał

Barwinek Patryk

Grupa: 211A

Data i godzina wykonania ćwiczenia

Data: 09.03.2012

Godzina: 11.40 – 13.10

CREATE OR REPLACE PROCEDURE zad1(nazwa VARCHAR2, placa NUMBER)

IS

BEGIN

INSERT INTO Stanowiska

VALUES (Seq_Stanowiska.NEXTVAL, nazwa, placa);

END;

/

CALL zad1('Murarz', 2000);
/

SELECT * FROM stanowiska;

WYNIK:

ID_ST NAZWA_ST MIN_PLACA
1 Dyrektor 3500
2 Kierownik 2400
3 Programista 2100
4 Informatyk 2000
5 Sekretarka 1800
6 Sprzątaczka 1200
7 Administrator 3000
8 Kadrowa 2150
9 Księgowa 2300
14 Murarz 2000
  1. CREATE OR REPLACE PROCEDURE zad2(imie VARCHAR2, nazwisko VARCHAR2, data DATE, plec VARCHAR2)

IS

BEGIN

INSERT INTO Osoby

VALUES (Seq_Osoby.NEXTVAL, imie, nazwisko, data, plec, 2);

END;

/

CALL zad2('Kamil','Massssz',To_Date('1980-11-13','YYYY-MM-DD'), 'K');

/

SELECT * FROM Osoby;

WYNIK:

ID_OS IMIE NAZWISKO DATA_UR PLEC ID_KIEROWNIKA
1 Jan Kowalski 22.05.1952 00:00:00 M  
2 Piotr Nowak 02.03.1962 00:00:00 M  
4 Anna Kruk 14.02.1974 00:00:00 K 2
5 Maria Nowak 17.11.1969 00:00:00 K 2
6 Ewa Wrona 10.12.1963 00:00:00 K 1
7 Zbigniew Lis 21.02.1981 00:00:00 M  
8 Paweł Zajšc 26.03.1968 00:00:00 M  
9 Marek Gil 13.11.1977 00:00:00 M  
10 Jadwiga Ptak 19.10.1979 00:00:00 K  
11 Katarzyna Dzik 05.03.1981 00:00:00 K 2
12 Marek Wilk 13.11.1977 00:00:00 M  
13 Anna Tracz 19.10.1979 00:00:00 K  
14 Katarzyna Wrona 05.03.1981 00:00:00 K 2
100 Kamil Massssz 13.11.1980 00:00:00 K 2
  1. CREATE OR REPLACE FUNCTION zad3(idOs NUMBER)

RETURN VARCHAR2

IS CURSOR kursor IS (SELECT id_os FROM Osoby);

tmp kursor%ROWTYPE;

idKier NUMBER;

idOso NUMBER;

imie VARCHAR2(15);

nazwisko VARCHAR2(20);

BEGIN

SELECT id_os INTO idOso FROM Osoby

WHERE id_os=idOs;

IF idOso IS NULL THEN

DBMS_output.PUT_LINE('Brak osoby');

RETURN 'Brak osoby';

ELSE

SELECT id_Kierownika INTO idKier FROM Osoby

WHERE id_os=idOso;

IF idKier IS NULL THEN

DBMS_output.PUT_LINE('Osoba nie posiada kierownika');

RETURN 'osoba nie posiada kierownika';

ELSE

SELECT o.imie, o.nazwisko INTO imie, nazwisko FROM Osoby o

WHERE id_os=idKier;

RETURN (imie || ' ' || nazwisko);

END IF;

END IF;

END;

/

SELECT zad3(1) FROM dual

/

WYNIK:

ZAD3(6)
Jan Kowalski
  1. CREATE OR REPLACE FUNCTION zad4(id_osoby NUMBER)

RETURN NUMBER IS

s NUMBER(7,2);

BEGIN

SELECT SUM(podstawa)+SUM(premia)+(SELECT podstawa*3 FROM Place
WHERE id_os=id_osoby AND za_miesiac='04')

+(SELECT podstawa*6 FROM Place

WHERE id_os=id_osoby AND za_miesiac='06') Zarobki INTO s FROM Place
WHERE id_os=id_osoby GROUP BY id_os;

IF s>85000 THEN s:=40/100*s;

ELSIF s>46000 AND s<=50000

THEN s:=30/100*s;

ElSIF s>3500 THEN s:=19/100*s;

END IF;

RETURN s;

END;

/

SELECT zad4(1) AS zaplata FROM dual;

/

WYNIK:

ZAPLATA
8626,1
  1. SET SERVEROUTPUT ON;

/

CREATE OR REPLACE PROCEDURE zad5(r VARCHAR2)

IS
CURSOR kursor IS
SELECT o.imie,o.nazwisko,s.nazwa_st,e.data_zat,e.data_zw FROM Etaty e,Osoby o,Stanowiska s

WHERE e.id_os=o.id_os

AND s.id_st=e.id_st;

BEGIN

FOR i IN kursor LOOP

IF i.data_zw IS NOT NULL THEN

IF EXTRACT(YEAR FROM i.data_zw)>=EXTRACT(YEAR FROM TO_DATE(r,'YYYY'))

AND EXTRACT(YEAR FROM i.data_zat)<=EXTRACT(YEAR FROM TO_DATE(r,'YYYY'))

THEN dbms_output.put_line(i.imie || ' ' || i.nazwisko);

END IF;

ELSIF EXTRACT(YEAR FROM i.data_zat)<=EXTRACT(YEAR FROM TO_DATE(r,'YYYY'))

THEN dbms_output.put_line(i.imie || ' ' || i.nazwisko);

END IF;

END LOOP;
END;

/

CALL zad5(2001);

/

WYNIK:

Text
Jan Kowalski
Jan Kowalski
Piotr Nowak
Ewa Wrona
Paweł Zając
Jadwiga Ptak
  1. CREATE OR REPLACE PROCEDURE zad6(stan VARCHAR2, rok VARCHAR2)

AS

CURSOR kursor IS

SELECT o.imie,o.nazwisko,s.nazwa_st,e.data_zat,e.data_zw

FROM Etaty e,Osoby o,Stanowiska s

WHERE e.id_os=o.id_os

AND s.id_st=e.id_st

AND s.nazwa_st=stan;

BEGIN

FOR i IN kursor LOOP

IF i.data_zw IS NOT NULL THEN

IF EXTRACT(YEAR FROM i.data_zw)>=EXTRACT(YEAR FROM TO_DATE(rok,'YYYY')) AND EXTRACT(YEAR FROM i.data_zat)<=EXTRACT(YEAR FROM TO_DATE(rok,'YYYY')) THEN

dbms_output.put_line(i.imie || ' ' || i.nazwisko); END IF;

ELSIF EXTRACT(YEAR FROM i.data_zat)<=EXTRACT(YEAR FROM TO_DATE(rok,'YYYY')) THEN dbms_output.put_line(i.imie || ' ' || i.nazwisko); END IF;

END LOOP;

END;

/

EXECUTE zad6('Informatyk', '2011');

/

WYNIK:

Text
Maria Nowak
  1. CREATE OR REPLACE PROCEDURE zad7

AS

v_zarobki place%ROWTYPE;

v_suma NUMBER;

v_rok NUMBER;

v_suma_lat NUMBER;

v_osoba osoby%ROWTYPE;

CURSOR c_osoba

IS SELECT * FROM osoby;

CURSOR placa

IS SELECT * FROM place

WHERE extract(YEAR FROM data)=v_rok AND id_os=v_osoba.id_os;

BEGIN

DBMS_OUTPUT.PUT_LINE('RAPORT PLAC Z DNIA: '||TO_CHAR(SYSDATE, 'dd-mm-yy'));

DBMS_OUTPUT.PUT_LINE(' ');

open c_osoba;

loop

v_rok:=2006;

v_suma_lat:=0;

FETCH c_osoba INTO v_osoba;

EXIT WHEN c_osoba%NOTFOUND;

DBMS_OUTPUT.PUT_LINE('IMIE NAZWISKO DATA_URODZENIA ');

DBMS_OUTPUT.PUT_LINE(v_osoba.imie ||' '|| v_osoba.nazwisko);

LOOP

DBMS_OUTPUT.PUT_LINE('place za rok: '|| v_rok);

DBMS_OUTPUT.PUT_LINE('DATA PODSTAWA PREMIA RAZEM ');

v_suma:=0;

OPEN placa;

LOOP

FETCH placa INTO v_zarobki;

EXIT WHEN placa%NOTFOUND;

DBMS_OUTPUT.PUT_LINE(v_zarobki.data ||' '||v_zarobki.podstawa||' '||v_zarobki.premia||' '||(NVL(v_zarobki.premia,0)+v_zarobki.podstawa));

v_suma:=v_suma+(NVL(v_zarobki.premia,0)+v_zarobki.podstawa);

END LOOP;

DBMS_OUTPUT.PUT_LINE('Suma za rok '|| v_rok||': '|| v_suma);

v_suma_lat:=v_suma_lat+NVL(v_suma,0);

CLOSE placa;

v_rok:=v_rok+1;

IF(v_rok>2008) then DBMS_OUTPUT.PUT_LINE('Suma ze wszytskich lat: '|| v_suma_lat);

END IF;

EXIT WHEN v_rok>2008;

END LOOP;

DBMS_OUTPUT.PUT_LINE(' ');

END LOOP;

END;

/

EXECUTE zad7;

/

WYNIK:

Text
RAPORT PLAC Z DNIA: 15-03-12
 
IMIE NAZWISKO DATA_URODZENIA
Jan Kowalski
place za rok: 2006
DATA PODSTAWA PREMIA RAZEM
06/05/10 3600 1200,5 4800,5
06/06/10 3500 1000 4500
06/07/10 3500 800 4300
Suma za rok 2006: 13600,5
place za rok: 2007
DATA PODSTAWA PREMIA RAZEM
Suma za rok 2007: 0
place za rok: 2008
DATA PODSTAWA PREMIA RAZEM
Suma za rok 2008: 0
Suma ze wszytskich lat: 13600,5
 
IMIE NAZWISKO DATA_URODZENIA
Piotr Nowak
place za rok: 2006
DATA PODSTAWA PREMIA RAZEM
06/05/10 2500 2500
06/06/10 2400 450 2850
06/07/10 2400 500 2900
Suma za rok 2006: 8250
place za rok: 2007
DATA PODSTAWA PREMIA RAZEM
Suma za rok 2007: 0
place za rok: 2008
DATA PODSTAWA PREMIA RAZEM
Suma za rok 2008: 0
Suma ze wszytskich lat: 8250
 
IMIE NAZWISKO DATA_URODZENIA
Anna Kruk
place za rok: 2006
DATA PODSTAWA PREMIA RAZEM
06/05/10 2100 500 2600
06/06/10 2100 2100
06/07/10 2100 300 2400
Suma za rok 2006: 7100
place za rok: 2007
DATA PODSTAWA PREMIA RAZEM
Suma za rok 2007: 0
place za rok: 2008
DATA PODSTAWA PREMIA RAZEM
Suma za rok 2008: 0
Suma ze wszytskich lat: 7100
 
IMIE NAZWISKO DATA_URODZENIA
Maria Nowak
place za rok: 2006
DATA PODSTAWA PREMIA RAZEM
06/05/10 1800 300 2100
06/06/10 1800 250 2050
06/07/10 1800 1800
Suma za rok 2006: 5950
place za rok: 2007
DATA PODSTAWA PREMIA RAZEM
Suma za rok 2007: 0
place za rok: 2008
DATA PODSTAWA PREMIA RAZEM
Suma za rok 2008: 0
Suma ze wszytskich lat: 5950
 
IMIE NAZWISKO DATA_URODZENIA
Ewa Wrona
place za rok: 2006
DATA PODSTAWA PREMIA RAZEM
06/05/10 2050 150 2200
06/06/10 2000 2000
06/07/10 2000 350 2350
Suma za rok 2006: 6550
place za rok: 2007
DATA PODSTAWA PREMIA RAZEM
Suma za rok 2007: 0
place za rok: 2008
DATA PODSTAWA PREMIA RAZEM
Suma za rok 2008: 0
Suma ze wszytskich lat: 6550
 
IMIE NAZWISKO DATA_URODZENIA
Zbigniew Lis
place za rok: 2006
DATA PODSTAWA PREMIA RAZEM
Suma za rok 2006: 0
place za rok: 2007
DATA PODSTAWA PREMIA RAZEM
Suma za rok 2007: 0
place za rok: 2008
DATA PODSTAWA PREMIA RAZEM
Suma za rok 2008: 0
Suma ze wszytskich lat: 0
 
IMIE NAZWISKO DATA_URODZENIA
Paweł Zajšc
place za rok: 2006
DATA PODSTAWA PREMIA RAZEM
Suma za rok 2006: 0
place za rok: 2007
DATA PODSTAWA PREMIA RAZEM
Suma za rok 2007: 0
place za rok: 2008
DATA PODSTAWA PREMIA RAZEM
Suma za rok 2008: 0
Suma ze wszytskich lat: 0
 
IMIE NAZWISKO DATA_URODZENIA
Marek Gil
place za rok: 2006
DATA PODSTAWA PREMIA RAZEM
Suma za rok 2006: 0
place za rok: 2007
DATA PODSTAWA PREMIA RAZEM
Suma za rok 2007: 0
place za rok: 2008
DATA PODSTAWA PREMIA RAZEM
Suma za rok 2008: 0
Suma ze wszytskich lat: 0
 
IMIE NAZWISKO DATA_URODZENIA
Jadwiga Ptak
place za rok: 2006
DATA PODSTAWA PREMIA RAZEM
Suma za rok 2006: 0
place za rok: 2007
DATA PODSTAWA PREMIA RAZEM
Suma za rok 2007: 0
place za rok: 2008
DATA PODSTAWA PREMIA RAZEM
Suma za rok 2008: 0
Suma ze wszytskich lat: 0
 
IMIE NAZWISKO DATA_URODZENIA
Katarzyna Dzik
place za rok: 2006
DATA PODSTAWA PREMIA RAZEM
Suma za rok 2006: 0
place za rok: 2007
DATA PODSTAWA PREMIA RAZEM
Suma za rok 2007: 0
place za rok: 2008
DATA PODSTAWA PREMIA RAZEM
Suma za rok 2008: 0
Suma ze wszytskich lat: 0
 
IMIE NAZWISKO DATA_URODZENIA
Marek Wilk
place za rok: 2006
DATA PODSTAWA PREMIA RAZEM
Suma za rok 2006: 0
place za rok: 2007
DATA PODSTAWA PREMIA RAZEM
Suma za rok 2007: 0
place za rok: 2008
DATA PODSTAWA PREMIA RAZEM
Suma za rok 2008: 0
Suma ze wszytskich lat: 0
 
IMIE NAZWISKO DATA_URODZENIA
Anna Tracz
place za rok: 2006
DATA PODSTAWA PREMIA RAZEM
Suma za rok 2006: 0
place za rok: 2007
DATA PODSTAWA PREMIA RAZEM
Suma za rok 2007: 0
place za rok: 2008
DATA PODSTAWA PREMIA RAZEM
Suma za rok 2008: 0
Suma ze wszytskich lat: 0
 
IMIE NAZWISKO DATA_URODZENIA
Katarzyna Wrona
place za rok: 2006
DATA PODSTAWA PREMIA RAZEM
Suma za rok 2006: 0
place za rok: 2007
DATA PODSTAWA PREMIA RAZEM
Suma za rok 2007: 0
place za rok: 2008
DATA PODSTAWA PREMIA RAZEM
Suma za rok 2008: 0
Suma ze wszytskich lat: 0
 
IMIE NAZWISKO DATA_URODZENIA
Kamil Massssz
place za rok: 2006
DATA PODSTAWA PREMIA RAZEM
Suma za rok 2006: 0
place za rok: 2007
DATA PODSTAWA PREMIA RAZEM
Suma za rok 2007: 0
place za rok: 2008
DATA PODSTAWA PREMIA RAZEM
Suma za rok 2008: 0
Suma ze wszytskich lat: 0
  1. CREATE OR REPLACE PROCEDURE zad8(imie IN VARCHAR2,nazwisko IN VARCHAR2) IS

n NUMBER(2);

CURSOR kursor(imie_p VARCHAR2,nazwisko_p VARCHAR2) IS SELECT o.id_os FROM Osoby o,Stanowiska s,Etaty e

WHERE o.id_os=e.id_os AND e.id_st=s.id_st AND o.imie=imie_p AND o.nazwisko=nazwisko_p AND s.id_st=2;

CURSOR kursor2 IS SELECT * FROM Osoby o WHERE o.id_kierownika IS NOT NULL;

wyjatek EXCEPTION;

BEGIN

FOR i IN kursor(imie,nazwisko) LOOP n:=i.id_os; END LOOP;

IF n IS NULL THEN RAISE wyjatek; END IF;

dbms_output.put_line('Sklad zespolu kierownika: ' || imie || ' ' || nazwisko || '.');

FOR i IN kursor2 LOOP dbms_output.put_line('- ' || i.imie || ' ' || i.nazwisko); END LOOP;

EXCEPTION

WHEN wyjatek THEN dbms_output.put_line('Osoba nie istnieje lub nie jest kierownikiem');

END;

/

EXECUTE zad8('Piotr','Nowak');

/

WYNIK:

Text
Sklad zespolu kierownika: Piotr Nowak.
- Anna Kruk
- Maria Nowak
- Ewa Wrona
- Katarzyna Dzik
- Katarzyna Wrona
- Kamil Massssz

CREATE OR REPLACE PROCEDURE zad9(imie VARCHAR2,nazwisko VARCHAR2,stan VARCHAR2) IS

ido NUMBER(2); ids NUMBER(2); ide NUMBER(2); liczba NUMBER(2); data_ur DATE;

CURSOR kursor(imie_p VARCHAR2,nazwisko_p VARCHAR2) IS SELECT o.id_os,o.data_ur FROM Osoby o WHERE o.imie=imie_p AND o.nazwisko=nazwisko_p;

CURSOR kursor2 IS SELECT * FROM Etaty;

mn18 EXCEPTION; juzp EXCEPTION;

BEGIN

OPEN kursor(imie,nazwisko);

FETCH kursor INTO ido,data_ur;

CLOSE kursor;

IF (EXTRACT(YEAR FROM sysdate)-EXTRACT(YEAR FROM data_ur))<18 THEN RAISE mn18; END IF;

SELECT s.id_st INTO ids FROM Stanowiska s WHERE s.nazwa_st=stan;

FOR i IN kursor2 LOOP

IF i.id_os=ido AND i.id_st=ids THEN RAISE juzp; END IF;

END LOOP;

SELECT max(e.id_e) INTO ide FROM Etaty e;

INSERT INTO Etaty(id_e,id_os,id_st,data_zat) VALUES (ide+1,ido,ids,TO_DATE(sysdate,'YYYY-MM-DD'));

dbms_output.put_line('Ok');

EXCEPTION

WHEN mn18 THEN dbms_output.put_line('Osoba ma mniej niz 18 lat');

WHEN juzp THEN dbms_output.put_line('Osoba pracuje juz na tym stanowisku!');

END;

/

SELECT * FROM Etaty;

EXECUTE zad9('Piotr','Nowak','Informatyk');

SELECT * FROM Etaty;

/

WYNIK:

ID_E ID_OS ID_ST DATA_ZAT DATA_ZW
1 1 1 29.01.2000 00:00:00  
2 2 2 29.01.2001 00:00:00  
3 4 3 29.03.2006 00:00:00  
4 5 4 29.01.2002 00:00:00  
5 4 4 29.01.2004 00:00:00 19.03.2006 00:00:00
7 6 8 29.03.2006 00:00:00  
6 6 5 29.01.2000 00:00:00 29.03.2006 00:00:00
8 7 7 29.01.2003 00:00:00  
9 8 4 29.01.2000 00:00:00 05.10.2005 00:00:00
10 9 7 29.01.2002 00:00:00  
11 10 2 29.01.2000 00:00:00 10.03.2003 00:00:00
12 1 3 29.01.2001 00:00:00  
13 4 7 19.03.2006 00:00:00  
14 6 9 29.03.2006 00:00:00  
15 2 4 15.03.0012 00:00:00  
  1. CREATE OR REPLACE PROCEDURE zad10(st VARCHAR2)

IS

CURSOR kursor IS SELECT osoby.imie, osoby.nazwisko, etaty.data_zat, osoby.id_os FROM osoby, etaty, stanowiska

WHERE stanowiska.id_st=etaty.id_st AND etaty.id_os=osoby.id_os AND stanowiska.nazwa_st=st ORDER BY osoby.imie;

pod NUMBER;

prem NUMBER;

suma NUMBER;

BEGIN

FOR k IN kursor

LOOP

SELECT Sum(podstawa) INTO pod FROM place WHERE id_os=k.id_os;

SELECT Sum(premia) INTO prem FROM place WHERE id_os=k.id_os;

suma:=pod+prem;

DBMS_OUTPUT.put_line ('Pracownicy: ');

DBMS_OUTPUT.put_line (k.imie||' '||k.nazwisko);

DBMS_OUTPUT.put_line ('Data zatrudnienia: '||k.data_zat);

DBMS_OUTPUT.put_line ('Wartosc zarobkow:'||suma);

END LOOP;

END;

/

EXECUTE zad10('Programista');

WYNIK:

Text
Pracownicy:
Anna Kruk
Data zatrudnienia: 06/03/29
Wartosc zarobkow:7100
Pracownicy:
Jan Kowalski
Data zatrudnienia: 01/01/29
Wartosc zarobkow:13600,5
  1. CREATE OR REPLACE FUNCTION zad11(Id_osoby NUMBER)

RETURN NUMBER IS

s NUMBER;

BEGIN

SELECT SUM(podstawa)+SUM(premia) Zarobki INTO s FROM Place WHERE id_os=id_osoby GROUP BY id_os;

RETURN s;

END;

/
SELECT zad11(1) AS zaplata FROM DUAL;

WYNIK:

ZAPLATA
13600,5

Wyszukiwarka

Podobne podstrony:
bd2!1A
ZARZ SRODOWISKIEM wyklad 1a
Audyt personalny 1a stud
1a wz2id 18643
II, rzis analityczny 1A Likpol
L1-1a, Ratownictwo Medyczne, Materiały ze studiów, Medycyna Ratunkowa
praca-magisterska-7092, 1a, prace magisterskie Politechnika Krakowska im. Tadeusza Kościuszki
praca-magisterska-7091, 1a, prace magisterskie Politechnika Krakowska im. Tadeusza Kościuszki
2 1a
BD2 wyklad 4
BLOK 1a 2 3 id 90304 Nieznany
04 1a LICZNIKI XBK KATALOGid 4946
Cwiczenia z ochrony gleby cz 1a Nieznany
bd2 02
bd2 03 funkcje i procedury
8 6 1a
bd2 07 strony WWW

więcej podobnych podstron