cromat1

Zad 1 blic

Nov 18th, 2015
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MySQL 1.05 KB | None | 0 0
  1. /*Napisati funkciju koja će za svakog radnika u novostvoreni atribut satiNaNalozima
  2.  računati kolika je ukupna suma ostvarenih sati rada za tog radnika po svim nalozima.
  3.   Funkcija vraća razliku između broja dohvaćenih i broja obrađenih zapisa. Obavezno je koristiti kursore.*/
  4.  
  5. ALTER TABLE radnik ADD COLUMN satiNaNalozima INT;
  6.  
  7.  DROP FUNCTION IF EXISTS sumaSati;
  8.  
  9.  DELIMITER //
  10.  
  11.  CREATE FUNCTION sumaSati()
  12.  RETURNS INT
  13.  DETERMINISTIC
  14.  BEGIN
  15.     DECLARE dohvaceno, i, sif,sati,br,razlika INT;
  16.  
  17.     DECLARE cur CURSOR FOR SELECT radnik.sifradnik,nalog.ostvarenisatirada FROM radnik
  18.         JOIN nalog ON nalog.sifradnik = radnik.sifradnik;
  19.    
  20.     SET i = 0;
  21.    
  22.    
  23.     OPEN cur;
  24.     SELECT FOUND_ROWS() INTO dohvaceno;
  25.    
  26.     WHILE i < dohvaceno DO
  27.         FETCH cur INTO sif/*,sati*/;
  28.        
  29.         UPDATE radnik
  30.         SET satiNaNalozima = sati
  31.         WHERE sifradnik = sif;
  32.        
  33.     SET i= i+1;
  34.     END WHILE;
  35.  
  36.     SELECT COUNT(sifradnik) INTO br FROM radnik
  37.     WHERE satiNaNalozima IS NOT NULL;
  38.    
  39.     CLOSE cur;
  40.     SET razlika = dohvaceno - br;
  41.     RETURN razlika;
  42. END; //
  43.  
  44. DELIMITER ;
Advertisement
Add Comment
Please, Sign In to add comment