Jon Jensen wrote:

On Thu, 28 Aug 2003, Andrew Dunstan wrote:



What is the state of things regarding having to use massive strings of quotes like this (taken from the 7.3 docs)?:

a_output := a_output || '' if v_'' || referrer_keys.kind || '' like '''''''''' || referrer_keys.key_string || '''''''''' then return '''''' || referrer_keys.referrer_type || ''''''; end if;'';

This is truly ugly, IMNSHO. Perl has its q() construct - any chance of
us doing something here?

I'm prepared to put in effort to implement a solution if there is
agreement on what the solution should be. Maybe some sort of magical
operator/function?



I was thinking the most natural thing would be to use something similar to COPY's stdin quoting:


CREATE FUNCTION bob() RETURNS INTEGER AS stdin LANGUAGE 'plpgsql';
BEGIN
        ...
END;
\.

Another possibility would be shell/Perl-style here documents, like this:

CREATE FUNCTION bob() RETURNS INTEGER AS <<EOF
BEGIN
        ...
END;
EOF
LANGUAGE 'plpgsql';

The former seems preferable since it uses a syntax PostgreSQL already
supports in another context.

Jon



Nice idea. I would probably never have thought of it :-) Makes function text almost first class, in the way that Oracle's is AFAICS,


I also prefer the first version, not least because it hoists the LANGUAGE clause to the top where it seems to me it belongs.

I have no idea how hard this would be.


cheers


andrew


---------------------------(end of broadcast)--------------------------- TIP 2: you can get off all lists at once with the unregister command (send "unregister YourEmailAddressHere" to [EMAIL PROTECTED])

Reply via email to