Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*procedura dodajaca nowe auto do salonu*/
- CREATE OR REPLACE PROCEDURE dodaj_auto(samochod auto.auto_id%TYPE, markaa auto.marka%TYPE, modell auto.model%TYPE, cenaa auto.cena%TYPE, salonn auto.salon_id%TYPE)
- AS
- BEGIN
- INSERT INTO auto(auto_id, marka, model,cena,salon_id)
- VALUES (samochod, markaa,modell, cenaa, salonn);
- END;
- /
- select * from auto;
- create sequence auto_seq start with 24;
- execute dodaj_auto(auto_seq.nextval,'polonez','vaio',3000,2);
- select * from auto;
- /* procedura ktora usuwa auto z salonu*/
- CREATE OR REPLACE PROCEDURE usun_auto(samochod auto.auto_id%TYPE, salonn auto.salon_id%TYPE)
- AS
- BEGIN
- DELETE FROM auto u
- WHERE u.auto_Id = samochod
- AND u.salon_id =salonn ;
- END;
- /
- execute usun_auto(44,2);
- select * from auto;
- /* procedura modyfikujaca cene auta*/
- select * from auto;
- CREATE OR REPLACE PROCEDURE aktualizuj_cene(samochod auto.auto_ID%TYPE, cenaa auto.cena%TYPE)
- AS
- BEGIN
- UPDATE auto o
- SET o.cena = cenaa
- WHERE o.auto_id=samochod;
- END;
- /
- SHOW ERR;
- execute aktualizuj_cene(12,20100);
- select * from auto;
- /* procedura dodajaca losowa nazwe salonu*/
- drop sequence adres_seq;
- drop sequence salon_seq;
- create sequence salon_seq start with 6;
- create sequence adres_seq start with 10;
- create or replace procedure insert_ran_salon
- as
- begin
- insert into salon
- values(
- salon_seq.nextval,
- adres_seq.nextval,
- DBMS_RANDOM.STRING('x',8));
- end;
- /
- execute insert_ran_salon;
- select * from salon;
- /* zwieksza wynagrodzenie 3 pracownikom ktorzy najmniej zarabiaja odpowiednio o 15, 10, 5%*/
- select * from pracownicy;
- CREATE OR REPLACE PROCEDURE wynagrodzenie_pracownikow IS
- CURSOR wszyscy_pracownicy IS
- SELECT * FROM pracownicy p
- ORDER BY p.wynagrodzenie ASC
- FOR UPDATE;
- liczydlo NUMBER(2):=1;
- srednia NUMBER (8, 2);
- BEGIN
- DBMS_OUTPUT.ENABLE;
- FOR wy IN wszyscy_pracownicy LOOP
- IF (liczydlo =1) THEN
- UPDATE pracownicy p
- SET p.wynagrodzenie = p.wynagrodzenie +(p.wynagrodzenie *0.15 )
- WHERE p.pracownicy_ID=wy.pracownicy_id;
- END IF;
- IF (liczydlo =2) THEN
- UPDATE pracownicy p
- SET p.wynagrodzenie = p.wynagrodzenie +(p.wynagrodzenie *0.10 )
- WHERE p.pracownicy_id=wy.pracownicy_id;
- END IF;
- IF (liczydlo =3) THEN
- UPDATE pracownicy p
- SET p.wynagrodzenie = p.wynagrodzenie +(p.wynagrodzenie *0.05 )
- WHERE p.pracownicy_id=wy.pracownicy_id;
- END IF;
- liczydlo:=liczydlo + 1;
- END LOOP;
- END;
- /
- EXECUTE wynagrodzenie_pracownikow;
- select * from pracownicy;
- /* wykorzystanie select into obliczanie roznicy */
- CREATE OR REPLACE FUNCTION roznica
- RETURN NUMBER
- IS
- minimalna naprawa.cena%TYPE;
- maksymalna naprawa.cena%TYPE;
- roznica naprawa.cena%TYPE;
- BEGIN
- SELECT Min(cena)
- INTO minimalna
- FROM naprawa;
- SELECT Max(cena)
- INTO maksymalna
- FROM naprawa;
- roznica:= maksymalna - minimalna;
- RETURN roznica;
- END;
- /
- SHOW ERR;
- /
- select roznica() from dual;
- /* cos tam z wyjatkami */
- CREATE OR REPLACE PROCEDURE wszystkie IS
- CURSOR pracownik IS
- SELECT *
- FROM pracownicy
- FOR UPDATE OF pracownicy.salon_id;
- wyjatek EXCEPTION;
- zm_salon pracownik%ROWTYPE;
- BEGIN
- FOR zm_salon IN pracownik LOOP
- IF zm_salon.salon_id IS NULL THEN
- RAISE wyjatek;
- END IF;
- END LOOP;
- EXCEPTION
- WHEN wyjatek THEN DBMS_OUTPUT.PUT_LINE('Brak przypisanego salonu do pracownika ! Sprawdz baze!');
- END;
- /
- SHOW ERR;
- /
- --set serveroutput on
- call wszystkie();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement