Zad1
CREATE OR REPLACE PROCEDURE zad1(
nazwa stanowiska.Nazwa_st%TYPE,
mini stanowiska.Min_placa%TYPE
)
AS
BEGIN
 INSERT INTO Stanowiska VALUES (seq_Stanowiska.NEXTVAL,nazwa,mini);
END ;
/
EXEC zad1('pracownik5',809);
Â
Zad2
CREATE OR REPLACE PROCEDURE zad2(
im osoby.imie%TYPE,
naz osoby.nazwisko%TYPE,
dat osoby.data_ur%TYPE,
p osoby.plec%TYPE
)
AS
BEGIN
 INSERT INTO Osoby VALUES (seq_osoby.NEXTVAL,im,naz,dat,p,null);
END ;
/
EXEC zad2('Pawele','Costamr',to_date('01-01-01','DD-MM-YY'),'M');
Â
Zad3
CREATE OR REPLACE FUNCTION zad(s NUMBER)
RETURN VARCHAR2
IS
x LONG;
y NUMBER;
CURSOR k1 IS SELECT * FROM osoby;
BEGIN
FOR i IN k1
LOOP
IF (i.id_os=s AND i.id_kierownika IS NOT NULL ) THEN
y:=i.id_kierownika;
ELSE
x:='nie ma';
END IF;
END LOOP;
FOR w IN k1
LOOP
IF (w.id_os=y) THEN
x:=w.imie||' '||w.nazwisko;
END IF;
END LOOP;
RETURN x;
END;
/
SELECT zad(123) FROM dual;
Â
Zad4
CREATE OR REPLACE FUNCTION zad4(s NUMBER)
RETURN NUMBER
IS
x NUMBER;
y NUMBER;
CURSOR k1 IS SELECT p.podstawa, p.premia, o.imie, o.nazwisko, p.id_os FROM osoby o, place p;
BEGIN
FOR i IN k1
LOOP
IF (i.id_os=s) THEN
y:=12*(i.podstawa+i.premia);
IF (y>85000) THEN
x:=0.4*y;
ELSIF (y>=50000 AND y<85000) THEN
x:=0.30*y;
ELSIF (y>3500 AND y<50000) THEN
x:=0.19*y;
ELSIF (y<=3500) THEN
x:=0;
END IF;
END IF;
END LOOP;
RETURN x;
END;
/
SELECT zad4(123) FROM dual;
Â
Zad5
CREATE OR REPLACE PROCEDURE zad5(s NUMBER)
IS
CURSOR k1 IS SELECT e.data_zat, e.id_os, o.imie, o.nazwisko FROM Etaty e, Osoby o WHERE e.id_os=o.id_os;
x NUMBER;
BEGIN
FOR i IN k1
LOOP
x:=to_char(i.data_zat, 'YYYY');
IF (s=x) THEN
DBMS_OUTPUT.put_line ('zatrudnieni '||i.id_os||' '||i.imie||' '||i.nazwisko);
END IF;
END LOOP;
END;
/
EXEC zad5(2009);
Â
Zad6
CREATE OR REPLACE PROCEDURE zad6(s VARCHAR2)
IS
CURSOR k1 IS SELECT s.nazwa_st,e.data_zat, o.imie, o.nazwisko FROM Etaty e, Osoby o, Stanowiska s WHERE s.id_st=e.id_st AND e.id_os=o.id_os;
x NUMBER;
BEGIN
FOR i IN k1
LOOP
IF (s=i.nazwa_st AND to_char(i.data_zat, 'YYYY')=2009) THEN
DBMS_OUTPUT.put_line ('zatrudnieni '||i.imie||' '||i.nazwisko);
END IF;
END LOOP;
END;
/
EXEC zad6('kierownik');
Â
Â
Â
Zad7
CREATE OR REPLACE PROCEDURE zad7
IS
CURSOR k1 IS SELECT s.nazwa_st,e.data_zat, o.imie, o.nazwisko, o.data_ur, p.podstawa, p.premia FROM Etaty e, Osoby o, Stanowiska s,Place p
WHERE s.id_st=e.id_st AND e.id_os=o.id_os AND p.id_os=o.id_os;
x NUMBER;
w NUMBER;
BEGIN
wujass 7:27:51
 DBMS_OUTPUT.ENABLE;
FOR i IN k1
LOOP
x:=i.premia+i.podstawa;
DBMS_OUTPUT.put_line ('Raport plac z dnia: '||i.imie||' '||i.nazwisko||' '||i.data_ur||' '||SYSDATE||' '||i.podstawa||' '||i.premia||' '||x);
DBMS_OUTPUT.put_line('suma wszystkich: '||w);
END LOOP;
END;
/
EXEC zad7;