Advertisement
Guest User

Untitled

a guest
Jun 18th, 2018
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.47 KB | None | 0 0
  1. CREATE DEFINER=`root`@`localhost` PROCEDURE `bad_pogrzeby`()
  2. BEGIN
  3. DECLARE v_CM_MIEJSCOWOSC varchar(100);
  4. declare v_CM_ULICA varchar(100);
  5. declare v_CM_NUMER_BUDYNKU int;
  6. declare v_CM_NUMER_MIESZKANIA int;
  7. declare v_CM_KOD_POCZTOWY varchar(6);
  8. DECLARE v_SWT_NAZWA varchar(100);
  9. DECLARE v_SWT_MIEJSCOWOSC VARCHAR(100);
  10. DECLARE v_SWT_ULICA VARCHAR(100);
  11. DECLARE v_SWT_NUMER_BUDYNKU int;
  12. DECLARE v_SWT_NUMER_MIESZKANIA int;
  13. DECLARE v_SWT_KOD_POCZTOWY VARCHAR(6);
  14. DECLARE v_PRF_NAZWA VARCHAR(200);
  15. DECLARE v_PRF_MIEJSCOWOSC VARCHAR(100);
  16. DECLARE v_NAZWA VARCHAR(100);
  17. DECLARE v_DATA date;
  18. DECLARE v_OD_PESEL numeric(11);
  19. declare v_OS_PESEL numeric(11);
  20. declare v_CENA numeric(8,2);
  21. DECLARE done INT DEFAULT FALSE;
  22. DECLARE v_ID_ADR_CM int;
  23. DECLARE v_ID_ADR_SWT int;
  24. DECLARE v_ID_PRF int;
  25. DECLARE v_ID_OD numeric(11);
  26. DECLARE v_ID_OS numeric(11);
  27. DECLARE v_ID_CM int;
  28. DECLARE v_ID_SWT int;
  29. DECLARE v_ERR int;
  30. DECLARE v_ERR_COUNT int;
  31. DECLARE v_ID int;
  32. DECLARE curs cursor for select SWT_MIEJSCOWOSC,SWT_ULICA, SWT_NUMER_BUDYNKU,SWT_NUMER_MIESZKANIA,SWT_KOD_POCZTOWY,DATA,CENA, SWT_NAZWA, PRF_NAZWA, PRF_MIEJSCOWOSC, CM_MIEJSCOWOSC, CM_ULICA,CM_NUMER_BUDYNKU, CM_NUMER_MIESZKANIA, CM_KOD_POCZTOWY,ERR, ID_OS, ID_OD, ID_POGRZEB from all_bad.pogrzeby;
  33. DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
  34. set v_err_count = (SELECT ERR_COUNT FROM all_bad.metadata limit 1);
  35. open curs;
  36.  
  37. read_loop : LOOP
  38.  
  39. fetch curs into v_SWT_MIEJSCOWOSC,v_SWT_ULICA, v_SWT_NUMER_BUDYNKU,v_SWT_NUMER_MIESZKANIA,v_SWT_KOD_POCZTOWY,v_DATA, v_CENA, v_SWT_NAZWA, v_PRF_NAZWA, v_PRF_MIEJSCOWOSC, v_CM_MIEJSCOWOSC, v_CM_ULICA, v_CM_NUMER_BUDYNKU, v_CM_NUMER_MIESZKANIA, v_CM_KOD_POCZTOWY, v_ERR, v_OS_PESEL, v_OD_PESEL, v_ID;
  40. IF done THEN
  41. LEAVE read_loop;
  42. END IF;
  43.  
  44. if (v_err<v_err_count)
  45. then
  46. SET v_ID_ADR_SWT = (SELECT ID_ADRESU
  47. FROM target.adresy
  48. WHERE MIEJSCOWOSC = v_SWT_MIEJSCOWOSC AND ULICA = v_SWT_ULICA AND NUMER_BUDYNKU = v_SWT_NUMER_BUDYNKU
  49. AND NUMER_MIESZKANIA = v_SWT_NUMER_MIESZKANIA AND KOD_POCZTOWY = v_SWT_KOD_POCZTOWY
  50. LIMIT 1);
  51. SET v_ID_ADR_CM = (SELECT ID_ADRESU
  52. FROM target.adresy
  53. WHERE MIEJSCOWOSC = v_CM_MIEJSCOWOSC AND ULICA = v_CM_ULICA AND NUMER_BUDYNKU = v_CM_NUMER_BUDYNKU
  54. AND NUMER_MIESZKANIA = v_CM_NUMER_MIESZKANIA AND KOD_POCZTOWY = v_CM_KOD_POCZTOWY
  55. LIMIT 1);
  56. select v_id_adr_cm, v_CM_MIEJSCOWOSC, v_CM_ULICA
  57. SET v_ID_CM = (SELECT ID_CMT
  58. FROM target.CMENTARZE
  59. WHERE ID_ADRESU = v_ID_ADR_CM
  60. LIMIT 1);
  61. SET v_ID_PRF = (SELECT id_PRF
  62. FROM target.parafie
  63. WHERE NAZWA = v_PRF_NAZWA AND MIEJSCOWOSC = v_PRF_MIEJSCOWOSC
  64. LIMIT 1);
  65. SET v_ID_SWT = (SELECT ID_SWT
  66. FROM target.swiatynie
  67. WHERE ID_PRF = v_ID_PRF AND NAZWA = v_SWT_NAZWA AND ID_ADRESU = v_ID_ADR_SWT
  68. LIMIT 1);
  69. SET v_ID_OD = (SELECT ID_OD
  70. FROM target.osoby_duchowne
  71. WHERE ID_OD = v_OD_PESEL
  72. LIMIT 1);
  73. SET v_ID_OS = (SELECT ID_OS
  74. FROM target.osoby_swieckie
  75. WHERE ID_OS = v_OS_PESEL
  76. LIMIT 1);
  77.  
  78. IF v_ID_ADR_SWT is null or v_ID_ADR_CM is null or v_ID_PRF is null or v_ID_SWT is null or v_ID_OS is null or v_ID_OD is null THEN
  79. UPDATE all_bad.pogrzeby set err = v_err+1 where ID_POGRZEB = v_ID;
  80. ELSE
  81. if(select id_pgb
  82. from target.pogrzeby
  83. where data=v_DATA
  84. and cena = v_CENA
  85. and PGB_DATA_K>curdate()
  86. and id_od=v_ID_OD
  87. and id_os=v_ID_Os
  88. and id_prf=v_ID_PRF
  89. and id_swt=v_id_swt
  90. and id_cmt=v_id_cm
  91. )is null then
  92. INSERT INTO all_stg.pogrzeby (ID_OS,ID_CM,ID_PRF,ID_SWT,DATA,CENA,ID_OD)
  93. value ( v_ID_OS, v_ID_CM, v_ID_PRF, v_ID_SWT, v_DATA, v_CENA, v_ID_OD);
  94. end if;
  95. DELETE FROM all_bad.pogrzeby where ID_POGRZEB = v_id;
  96. END IF;
  97. end if;
  98. END LOOP;
  99.  
  100. close curs;
  101.  
  102. END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement