From fd9323efdc67992526c4a2512b075df044a09ed0 Mon Sep 17 00:00:00 2001 From: Jason Etheridge Date: Wed, 25 Feb 2015 10:54:20 -0500 Subject: [PATCH] add a delimiter paramater, and a variant that returns an array of tags Signed-off-by: Jason Etheridge --- sql/base/base.sql | 25 ++++++++++++++++++++++--- 1 files changed, 22 insertions(+), 3 deletions(-) diff --git a/sql/base/base.sql b/sql/base/base.sql index 896a566..b786140 100644 --- a/sql/base/base.sql +++ b/sql/base/base.sql @@ -2124,8 +2124,8 @@ CREATE OR REPLACE FUNCTION migration_tools.duplicate_template (INTEGER, INTEGER[ END; $$ LANGUAGE PLPGSQL STRICT VOLATILE; -CREATE OR REPLACE FUNCTION migration_tools.get_marc_tag (TEXT, TEXT, TEXT) RETURNS TEXT AS $$ - my ($marcxml, $tag, $subfield) = @_; +CREATE OR REPLACE FUNCTION migration_tools.get_marc_tag (TEXT, TEXT, TEXT, TEXT) RETURNS TEXT AS $$ + my ($marcxml, $tag, $subfield, $delimiter) = @_; use MARC::Record; use MARC::File::XML; @@ -2136,6 +2136,25 @@ CREATE OR REPLACE FUNCTION migration_tools.get_marc_tag (TEXT, TEXT, TEXT) RETUR my $marc = MARC::Record->new_from_xml($marcxml, 'UTF-8'); $field = $marc->field($tag); }; - return $field->as_string($subfield); + return $field->as_string($subfield,$delimiter); +$$ LANGUAGE PLPERLU STABLE; + +CREATE OR REPLACE FUNCTION migration_tools.get_marc_tags (TEXT, TEXT, TEXT, TEXT) RETURNS TEXT[] AS $$ + my ($marcxml, $tag, $subfield, $delimiter) = @_; + + use MARC::Record; + use MARC::File::XML; + use MARC::Field; + + my @fields; + eval { + my $marc = MARC::Record->new_from_xml($marcxml, 'UTF-8'); + @fields = $marc->field($tag); + }; + my @texts; + foreach my $field (@fields) { + push @texts, $field->as_string($subfield,$delimiter); + } + return \@texts; $$ LANGUAGE PLPERLU STABLE; -- 1.7.2.5