4 INSERT INTO config.upgrade_log (version) VALUES ('0196'); -- miker
6 CREATE TYPE vandelay.tcn_data AS (tcn TEXT, tcn_source TEXT, used BOOL);
7 CREATE OR REPLACE FUNCTION vandelay.find_bib_tcn_data ( xml TEXT ) RETURNS SETOF vandelay.tcn_data AS $_$
11 output vandelay.tcn_data%ROWTYPE;
15 eg_tcn := BTRIM((oils_xpath('//*[@tag="001"]/text()',xml))[1]);
16 IF eg_tcn IS NOT NULL AND eg_tcn <> '' THEN
18 eg_tcn_source := BTRIM((oils_xpath('//*[@tag="003"]/text()',xml))[1]);
19 IF eg_tcn_source IS NULL OR eg_tcn_source = '' THEN
20 eg_tcn_source := 'System Local';
23 PERFORM id FROM biblio.record_entry WHERE tcn_value = eg_tcn AND NOT deleted;
32 output.tcn_source := eg_tcn_source;
38 eg_tcn := BTRIM((oils_xpath('//*[@tag="901"]/*[@code="a"]/text()',xml))[1]);
39 IF eg_tcn IS NOT NULL AND eg_tcn <> '' THEN
41 eg_tcn_source := BTRIM((oils_xpath('//*[@tag="901"]/*[@code="b"]/text()',xml))[1]);
42 IF eg_tcn_source IS NULL OR eg_tcn_source = '' THEN
43 eg_tcn_source := 'System Local';
46 PERFORM id FROM biblio.record_entry WHERE tcn_value = eg_tcn AND NOT deleted;
55 output.tcn_source := eg_tcn_source;
61 eg_tcn := BTRIM((oils_xpath('//*[@tag="039"]/*[@code="a"]/text()',xml))[1]);
62 IF eg_tcn IS NOT NULL AND eg_tcn <> '' THEN
64 eg_tcn_source := BTRIM((oils_xpath('//*[@tag="039"]/*[@code="b"]/text()',xml))[1]);
65 IF eg_tcn_source IS NULL OR eg_tcn_source = '' THEN
66 eg_tcn_source := 'System Local';
69 PERFORM id FROM biblio.record_entry WHERE tcn_value = eg_tcn AND NOT deleted;
78 output.tcn_source := eg_tcn_source;
84 eg_tcn := REGEXP_REPLACE((oils_xpath('//*[@tag="020"]/*[@code="a"]/text()',xml))[1], $re$^(\w+).*?$$re$, $re$\1$re$);
85 IF eg_tcn IS NOT NULL AND eg_tcn <> '' THEN
87 eg_tcn_source := 'ISBN';
89 PERFORM id FROM biblio.record_entry WHERE tcn_value = eg_tcn AND NOT deleted;
98 output.tcn_source := eg_tcn_source;
104 eg_tcn := REGEXP_REPLACE((oils_xpath('//*[@tag="022"]/*[@code="a"]/text()',xml))[1], $re$^(\w+).*?$$re$, $re$\1$re$);
105 IF eg_tcn IS NOT NULL AND eg_tcn <> '' THEN
107 eg_tcn_source := 'ISSN';
109 PERFORM id FROM biblio.record_entry WHERE tcn_value = eg_tcn AND NOT deleted;
112 output.used := FALSE;
117 output.tcn := eg_tcn;
118 output.tcn_source := eg_tcn_source;
124 eg_tcn := REGEXP_REPLACE((oils_xpath('//*[@tag="010"]/*[@code="a"]/text()',xml))[1], $re$^(\w+).*?$$re$, $re$\1$re$);
125 IF eg_tcn IS NOT NULL AND eg_tcn <> '' THEN
127 eg_tcn_source := 'LCCN';
129 PERFORM id FROM biblio.record_entry WHERE tcn_value = eg_tcn AND NOT deleted;
132 output.used := FALSE;
137 output.tcn := eg_tcn;
138 output.tcn_source := eg_tcn_source;
144 eg_tcn := REGEXP_REPLACE((oils_xpath('//*[@tag="035"]/*[@code="a"]/text()',xml))[1], $re$^.*?(\w+)$$re$, $re$\1$re$);
145 IF eg_tcn IS NOT NULL AND eg_tcn <> '' THEN
147 eg_tcn_source := 'System Legacy';
149 PERFORM id FROM biblio.record_entry WHERE tcn_value = eg_tcn AND NOT deleted;
152 output.used := FALSE;
157 output.tcn := eg_tcn;
158 output.tcn_source := eg_tcn_source;
165 $_$ LANGUAGE PLPGSQL;