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