2009/4/11 Tom Lane <t...@sss.pgh.pa.us>:
> Pavel Stehule <pavel.steh...@gmail.com> writes:
>> But the proc
>> CREATE OR REPLACE FUNCTION some_proc(tabname varchar)
>> RETURNS void AS $$
>> BEGIN
>>   EXECUTE 'CREATE TABLE $1(a integer)' USING tabname;
>
>> is more readable than EXECUTE 'CREATE TABLE ' || tabname || '(....
>
> I was intentionally excluding the idea of substituting parameters for
> names as opposed to constants.  For one thing it's fundamentally
> ambiguous --- given
>
>        string_var := 'foo';
>
>        EXECUTE 'SELECT $1 FROM bar' USING string_var;
>
> is that supposed to mean SELECT 'foo' FROM bar or SELECT foo FROM bar?
>
> The other problem is that if you allow name substitution it becomes
> entirely impossible to do any planning or even validity checking before
> the parameter values are available.  So while string assembly is kind
> of a pain in the rear when you really do need a dynamic name reference,
> I think we should keep it firmly separate from parameter substitution.
>

+1

>                        regards, tom lane
>

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to