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;
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;