egdb3_12_9
.url_verify
Tables
(current)
Columns
Constraints
Relationships
Orphan Tables
Anomalies
Routines
extract_urls(session_id integer, item_id integer)
Parameters
Name
Type
Mode
session_id
integer
IN
item_id
integer
IN
Definition
DECLARE last_seen_tag TEXT; current_tag TEXT; current_sf TEXT; current_url TEXT; current_ord INT; current_url_pos INT; current_selector url_verify.url_selector%ROWTYPE; BEGIN current_ord := 1; FOR current_selector IN SELECT * FROM url_verify.url_selector s WHERE s.session = session_id LOOP current_url_pos := 1; LOOP SELECT (oils_xpath(current_selector.xpath || '/text()', b.marc))[current_url_pos] INTO current_url FROM biblio.record_entry b JOIN container.biblio_record_entry_bucket_item c ON (c.target_biblio_record_entry = b.id) WHERE c.id = item_id; EXIT WHEN current_url IS NULL; SELECT (oils_xpath(current_selector.xpath || '/../@tag', b.marc))[current_url_pos] INTO current_tag FROM biblio.record_entry b JOIN container.biblio_record_entry_bucket_item c ON (c.target_biblio_record_entry = b.id) WHERE c.id = item_id; IF current_tag IS NULL THEN current_tag := last_seen_tag; ELSE last_seen_tag := current_tag; END IF; SELECT (oils_xpath(current_selector.xpath || '/@code', b.marc))[current_url_pos] INTO current_sf FROM biblio.record_entry b JOIN container.biblio_record_entry_bucket_item c ON (c.target_biblio_record_entry = b.id) WHERE c.id = item_id; INSERT INTO url_verify.url (session, item, url_selector, tag, subfield, ord, full_url) VALUES ( session_id, item_id, current_selector.id, current_tag, current_sf, current_ord, current_url); current_url_pos := current_url_pos + 1; current_ord := current_ord + 1; END LOOP; END LOOP; RETURN current_ord - 1; END;