Advertisement
Guest User

ZADANIE DODATKOWE FUNKCJA WRAZ Z BAZA

a guest
Oct 15th, 2019
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MySQL 3.64 KB | None | 0 0
  1. CREATE TABLE ZESPOLY
  2.     (ID_ZESP NUMERIC(2) PRIMARY KEY,
  3.     NAZWA CHARACTER VARYING(20),
  4.     ADRES CHARACTER VARYING(20) );
  5.  
  6. CREATE TABLE ETATY
  7.       ( NAZWA CHARACTER VARYING(15) PRIMARY KEY,
  8.     PLACA_OD NUMERIC(6,2),
  9.     PLACA_DO NUMERIC(6,2));
  10.  
  11. CREATE TABLE PRACOWNICY
  12.        (ID_PRAC NUMERIC(4) PRIMARY KEY,
  13.     NAZWISKO CHARACTER VARYING(15),
  14.     IMIE CHARACTER VARYING(15),
  15.     ETAT CHARACTER VARYING(15),
  16.     ID_SZEFA NUMERIC(4),
  17.     ZATRUDNIONY DATE,
  18.     PLACA_POD NUMERIC(6,2),
  19.     PLACA_DOD NUMERIC(6,2),
  20.     ID_ZESP NUMERIC(2),
  21.   CHECK(PLACA_POD>100),
  22.   FOREIGN KEY (ID_SZEFA) REFERENCES PRACOWNICY(ID_PRAC),
  23.   FOREIGN KEY (ETAT) REFERENCES ETATY(NAZWA),
  24.   FOREIGN KEY (ID_ZESP) REFERENCES ZESPOLY(ID_ZESP));
  25.  
  26. INSERT INTO ZESPOLY VALUES (10,'ADMINISTRACJA',      'PIOTROWO 2');
  27. INSERT INTO ZESPOLY VALUES (20,'SYSTEMY ROZPROSZONE','PIOTROWO 3A');
  28. INSERT INTO ZESPOLY VALUES (30,'SYSTEMY EKSPERCKIE', 'STRZELECKA 14');
  29. INSERT INTO ZESPOLY VALUES (40,'ALGORYTMY',          'WIENIAWSKIEGO 16');
  30. INSERT INTO ZESPOLY VALUES (50,'BADANIA OPERACYJNE', 'MIELZYNSKIEGO 30');
  31.  
  32. INSERT INTO ETATY VALUES ('PROFESOR'  ,3000.00, 4000.00);
  33. INSERT INTO ETATY VALUES ('ADIUNKT'   ,2510.00, 3000.00);
  34. INSERT INTO ETATY VALUES ('ASYSTENT'  ,1500.00, 2100.00);
  35. INSERT INTO ETATY VALUES ('DOKTORANT'  ,800.00, 1000.00);
  36. INSERT INTO ETATY VALUES ('SEKRETARKA',1470.00, 1650.00);
  37. INSERT INTO ETATY VALUES ('DYREKTOR' ,4280.00,5100.00);
  38. INSERT INTO PRACOWNICY VALUES (100,'Marecki','Jan'    ,'DYREKTOR'  ,NULL,           '1968-01-01',4730.00,980.50,10);
  39. INSERT INTO PRACOWNICY VALUES (110,'Janicki','Karol'  ,'PROFESOR'  ,100 ,           '1973-05-01',3350.00,610.00,40);
  40. INSERT INTO PRACOWNICY VALUES (120,'Nowicki','Pawel'  ,'PROFESOR'  ,100 ,           '1977-09-01',3070.00,  NULL,30);
  41. INSERT INTO PRACOWNICY VALUES (130,'Nowak','Piotr' ,'PROFESOR'  ,100 ,              '1968-07-01', 3960.00,  NULL,20);
  42. INSERT INTO PRACOWNICY VALUES (140,'Kowalski','Krzysztof','PROFESOR'  ,130,     '1969-07-05', 3230.00,805.00,20);
  43. INSERT INTO PRACOWNICY VALUES (150,'Grzybowska','Maria','ADIUNKT'   ,130 ,      '1977-09-01', 2845.50,  NULL,20);
  44. INSERT INTO PRACOWNICY VALUES (160,'Krakowska','Joanna', 'SEKRETARKA'   ,130 ,'1985-03-01', 1590.00,  NULL,20);
  45. INSERT INTO PRACOWNICY VALUES (170,'Opolski','Roman'  ,'ASYSTENT'  ,130 ,           '1992-10-01', 1839.70, 480.50,20);
  46. INSERT INTO PRACOWNICY VALUES (190,'Kotarski','Konrad', 'ASYSTENT'  ,140 ,      '1993-09-01', 1971.00,  NULL,20);
  47. INSERT INTO PRACOWNICY VALUES (180,'Makowski', 'Marek', 'ADIUNKT',100 ,             '1985-09-01', 2610.20,  NULL,10);
  48. INSERT INTO PRACOWNICY VALUES (200,'Przywarek','Leon' ,'DOKTORANT'  ,140 ,      '1995-08-01', 900.00,  NULL,30);
  49. INSERT INTO PRACOWNICY VALUES (210,'Kotlarczyk','Stefan','DOKTORANT'  ,130 ,    '1993-12-01', 900.00,570.60,30);
  50. INSERT INTO PRACOWNICY VALUES (220,'Siekierski', 'Mateusz','ASYSTENT'  ,110 ,   '1993-10-01', 1889.00,  NULL,20);
  51. INSERT INTO PRACOWNICY VALUES (230,'Dolny', 'Tomasz' ,'ASYSTENT'  ,120 ,            '1992-09-01', 1850.00, 390.00,NULL);
  52.  
  53. DELIMITER $$
  54. CREATE FUNCTION rep_lace(in_string varchar(1000), previous varchar(64), new varchar(64))
  55. RETURNS varchar(1000)
  56. DETERMINISTIC
  57. BEGIN
  58.     DECLARE res varchar(1000);
  59.     DECLARE counter int;
  60.     DECLARE i int;
  61.     SET res = in_string;
  62.     SET counter = 1;
  63.     WHILE(counter <= char_length(res)) DO
  64.         SET i = 1;
  65.         myloop: WHILE(i <= char_length(previous)) DO
  66.                     IF SUBSTRING(res, counter, 1) = SUBSTRING(previous, i, 1) THEN
  67.                         SET res = REPLACE(res, SUBSTRING(res, counter, 1), SUBSTRING(new, i, 1));
  68.                         LEAVE myloop;
  69.                     ELSE
  70.                         SET i = i + 1;
  71.                     END IF;
  72.         END WHILE myloop;
  73.         SET counter = counter + 1;
  74.     END WHILE;
  75.     RETURN res;
  76. END$$
  77. SELECT IMIE, rep_lace(NAZWISKO, 'MLKmlk', 'XXXXXX') FROM PRACOWNICY;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement