Advertisement
Guest User

Untitled

a guest
Jan 19th, 2019
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. create or replace function norm_hours_millis() returns void as $$
  2. declare
  3.   rec record;
  4.   xml_chunk text;
  5. begin
  6.   for rec in (select * from worker) loop
  7.     xml_chunk := (SELECT XMLELEMENT(NAME "normHoursYearConfigList", XMLAGG(XMLELEMENT(NAME "normHoursConfig", XMLFOREST(normHours AS "normHours", periodStart AS "periodStart", periodEnd AS "periodEnd"))))
  8.     FROM (
  9.            SELECT dat."normHours" * 3600 * 1000 AS normHours,
  10.                   dat."periodStart" AS periodStart,
  11.                   dat."periodEnd" AS periodEnd
  12.            FROM (SELECT xmltable.* FROM system.worker as ws, xmltable('//normHoursYearConfigList/normHoursConfig'
  13.                                                                              passing cast(norm_hours_config as xml)
  14.                                                                              columns
  15.                                                                                "normHours" BIGINT,
  16.                                                                                "periodStart" TEXT,
  17.                                                                                "periodEnd" TEXT) where ws.id = rec.id) AS dat) AS xmldat);
  18.     raise notice '%', xml_chunk;
  19.  
  20.     if xml_chunk <> '' then
  21.       UPDATE SYSTEM.worker as w
  22.         SET norm_hours_config = REGEXP_REPLACE(norm_hours_config, '<normHoursYearConfigList>(.*?)</normHoursYearConfigList>', ml_chunk)
  23.             where w.id = rec.id;
  24.  
  25.       raise notice '% updated', rec.id;
  26.     end if;
  27.  
  28.   end loop;
  29. end;
  30. $$ language plpgsql;
  31.  
  32.  
  33. SELECT * FROM norm_hours_millis();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement