simple stored function to check parseability of MARCXML blobs
authorGalen Charlton <gmc@esilibrary.com>
Tue, 24 Jul 2012 19:25:58 +0000 (15:25 -0400)
committerGalen Charlton <gmc@esilibrary.com>
Tue, 24 Jul 2012 19:25:58 +0000 (15:25 -0400)
Signed-off-by: Galen Charlton <gmc@esilibrary.com>

sql/base/base.sql

index ab7b654..deeaa3c 100644 (file)
@@ -1625,4 +1625,23 @@ END;
 
 $$ LANGUAGE plpgsql;
 
+CREATE OR REPLACE FUNCTION migration_tools.marc_parses( TEXT ) RETURNS BOOLEAN AS $func$
+
+use MARC::Record;
+use MARC::File::XML (BinaryEncoding => 'UTF-8');
+use MARC::Charset;
+
+MARC::Charset->assume_unicode(1);
+
+my $xml = shift;
+
+eval { my $r = MARC::Record->new_from_xml( $xml ); };
+if ($@) {
+    return 0;
+} else {
+    return 1;
+}
+
+$func$ LANGUAGE PLPERLU;
+COMMENT ON FUNCTION migration_tools.marc_parses(TEXT) IS 'Return boolean indicating if MARCXML string is parseable by MARC::File::XML';