Hi.

> > Can give a link ?
> can do :
> http://freshmeat.net/projects/mysql2pgsql/?highlight=convert+sql
Thank you.

BTW, if you interested in this tool, I may send you fresh versions or place it on the 
web.

Maybe you will or somebody help me with one problem ? Do you know PL/pgSQL and how to 
create new type in Postgres ?
The problem is that I can't use new type constructed with CREATE TYPE if transform 
functions written on PL/pgSQL.
Because PL/pgSQL doesn't support type "opaque", or I do something wrong. The same 
function on PL/pgSQL with 
input argtype "text" or "int2" works fine, but when I simply change argtype to 
"opaque", I get "compilation error near line 0".
Source is below.

Thanks,
Max Rudensky.

BEGIN;

CREATE FUNCTION enum_access_Monday_in (opaque)
        RETURNS enum_access_Monday
        AS '
        DECLARE
            invalue ALIAS for $1;
        BEGIN
                IF invalue='''' OR invalue=''0'' THEN RETURN 0; END IF;
                IF invalue=''Monday'' OR invalue=''1'' THEN RETURN 1; END IF;
                IF invalue=''Tuesday'' OR invalue=''2'' THEN RETURN 2; END IF;
                IF invalue=''Wednesday'' OR invalue=''3'' THEN RETURN 3; END IF;
                RAISE EXCEPTION ''incorrect input value: %'',invalue;
        END;'
        LANGUAGE 'plpgsql'
        WITH (ISCACHABLE);
CREATE FUNCTION enum_access_Monday_out (opaque)
        RETURNS opaque
        AS '
        DECLARE
            outvalue ALIAS for $1;
        BEGIN
                IF outvalue=0 THEN RETURN ''''; END IF;
                IF outvalue=1 THEN RETURN ''Monday''; END IF;
                IF outvalue=2 THEN RETURN ''Tuesday''; END IF;
                IF outvalue=3 THEN RETURN ''Wednesday''; END IF;
                RAISE EXCEPTION ''incorrect output value: %'',outvalue;
        END;'
        LANGUAGE 'plpgsql'
        WITH (ISCACHABLE);

CREATE TYPE enum_access_Monday (
        internallength = 2,
        input = enum_access_Monday_in,
        output = enum_access_Monday_out,
        PASSEDBYVALUE
);

COMMIT;

Reply via email to