· 9 years ago · Nov 17, 2016, 09:52 PM
1DROP PROCEDURE IF EXISTS dohvatRadnika;
2DELIMITER //
3 CREATE PROCEDURE dohvatRadnika(IN N INT)
4 BEGIN
5 DECLARE prosjekSati , stariKoef,noviKoef DOUBLE;
6 DECLARE flag BOOL;
7 DECLARE t_broj, tempNesto INT;
8
9 DECLARE kursor CURSOR FOR
10 SELECT DISTINCT radnik.sifRadnik FROM radnik
11 JOIN nalog ON nalog.sifRadnik=radnik.sifRadnik
12 JOIN kvar ON kvar.sifKvar=nalog.sifKvar
13 WHERE YEAR(datPrimitkaNalog)>YEAR(datPrimitkaNalog)-N;
14
15 DECLARE CONTINUE HANDLER FOR NOT FOUND SET flag=TRUE;
16 SET flag=FALSE;
17 DROP TEMPORARY TABLE IF EXISTS temp;
18 CREATE TEMPORARY TABLE temp(
19 sifra_radnika INT,
20 stari_koeficijent DOUBLE,
21 novi_koeficijent DOUBLE
22 );
23
24 SELECT AVG(kvar.satiKvar) INTO prosjekSati FROM kvar;
25 OPEN kursor;
26
27 petlja:LOOP
28 FETCH kursor INTO t_broj;
29 IF flag=TRUE THEN
30 LEAVE petlja;
31 END IF;
32 SELECT COUNT(satiKvar) INTO tempNesto FROM kvar
33 JOIN nalog ON nalog.sifKvar=kvar.sifKvar
34 JOIN radnik ON radnik.sifRadnik=nalog.sifRadnik
35 WHERE satiKvar>prosjekSati AND radnik.sifRadnik=t_broj;
36
37 SELECT FOUND_ROWS() INTO brojVelKvar;
38
39 IF tempNesto>2 THEN
40 SELECT KoefPlaca INTO stariKoef FROM radnik
41 WHERE radnik.sifRadnik=t_broj;
42
43 UPDATE radnik
44 SET KoefPlaca=KoefPlaca+KoefPlaca*0.3
45 WHERE radnik.sifRadnik=t_broj;
46
47 SELECT KoefPlaca INTO noviKoef FROM radnik
48 WHERE radnik.sifRadnik=t_broj;
49
50 INSERT INTO temp (sifra_radnika, stari_koeficijent, novi_koeficijent)
51 VALUES(t_broj,stariKoef,noviKoef);
52 END IF;
53
54 END LOOP;
55 CLOSE kursor;
56 SELECT * FROM temp;
57 END //
58DELIMITER ;
59
60CALL dohvatRadnika(15);
61SELECT * FROM radnik;