X-Git-Url: http://git.equinoxoli.org/?p=migration-tools.git;a=blobdiff_plain;f=sql%2Fbase%2Fbase.sql;h=e18c00428176bb603985284767283a1a5b341678;hp=f0b565422e4913105f14e3793d1d79edc4600a16;hb=62ae8fc257b7637ba3d378ca21ff61a674bf2553;hpb=6a1a598c8c88e4cfa1187a4e8ee02a494c4f576b diff --git a/sql/base/base.sql b/sql/base/base.sql index f0b5654..e18c004 100644 --- a/sql/base/base.sql +++ b/sql/base/base.sql @@ -624,25 +624,18 @@ CREATE OR REPLACE FUNCTION migration_tools.expand_barcode (TEXT, TEXT, INTEGER, return "$prefix$new_barcode$suffix"; $$ LANGUAGE PLPERLU STABLE; -CREATE OR REPLACE FUNCTION migration_tools.attempt_cast (TEXT,TEXT,TEXT) RETURNS RECORD AS $$ +-- remove previous version of this function +DROP FUNCTION IF EXISTS migration_tools.attempt_cast(TEXT, TEXT, TEXT); + +CREATE OR REPLACE FUNCTION migration_tools.attempt_cast (TEXT, TEXT) RETURNS TEXT AS $$ DECLARE attempt_value ALIAS FOR $1; datatype ALIAS FOR $2; - fail_value ALIAS FOR $3; - output RECORD; BEGIN - FOR output IN - EXECUTE 'SELECT ' || quote_literal(attempt_value) || '::' || datatype || ' AS a;' - LOOP - RETURN output; - END LOOP; + EXECUTE 'SELECT ' || quote_literal(attempt_value) || '::' || datatype || ' AS a;'; + RETURN attempt_value; EXCEPTION - WHEN OTHERS THEN - FOR output IN - EXECUTE 'SELECT ' || quote_literal(fail_value) || '::' || datatype || ' AS a;' - LOOP - RETURN output; - END LOOP; + WHEN OTHERS THEN RETURN NULL; END; $$ LANGUAGE PLPGSQL STRICT STABLE;