Advertisement
cmptrwz

Update Copy Locations

Jun 14th, 2012
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. DO $FUNC$
  2. DECLARE
  3. asset_copy asset.copy%ROWTYPE;
  4. copy_owning_lib INT;
  5. new_copy_location INT;
  6. BEGIN
  7. FOR asset_copy IN SELECT acp.*
  8. FROM asset.copy acp
  9. JOIN asset.call_number acn ON acp.call_number = acn.id
  10. JOIN asset.copy_location acpl ON acp.location = acpl.id
  11. WHERE acn.owning_lib != acpl.owning_lib AND acp.circ_lib != acpl.owning_lib LOOP
  12. SELECT INTO copy_owning_lib owning_lib FROM asset.call_number WHERE id = asset_copy.call_number;
  13. SELECT INTO new_copy_location acpl.id FROM asset.copy_location acpl JOIN (SELECT * FROM actor.org_unit_ancestors_distance(copy_owning_lib) UNION SELECT * FROM actor.org_unit_ancestors_distance(asset_copy.circ_lib)) aouad ON acpl.owning_lib = aouad.id WHERE name = (SELECT name FROM asset.copy_location WHERE id = asset_copy.location) ORDER BY distance LIMIT 1;
  14. IF NOT FOUND OR new_copy_location = asset_copy.location THEN
  15. CONTINUE;
  16. END IF;
  17. RAISE NOTICE 'OLD % NEW % COPY %', asset_copy.location, new_copy_location, asset_copy.id;
  18. UPDATE asset.copy SET location = new_copy_location WHERE id = asset_copy.id;
  19. END LOOP;
  20. END;
  21. $FUNC$;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement