2010/1/14 Vincenzo Romano <vincenzo.rom...@notorand.it>: > 2010/1/14 Pavel Stehule <pavel.steh...@gmail.com>: >> 2010/1/14 Vincenzo Romano <vincenzo.rom...@notorand.it>: >>> 2010/1/14 Adrian Klaver <adrian.kla...@gmail.com>: >>>> On Wednesday 13 January 2010 10:19:57 pm Vincenzo Romano wrote: > ... >>> CREATE OR REPLACE FUNCTION f() >>> RETURNS VOID >>> LANGUAGE plpgsql >>> AS $function$ >>> DECLARE >>> cmd TEXT; >>> BEGIN >>> EXECUTE ' >>> SELECT $l0$ALTER TABLE test ALTER COLUMN i SET DEFAULT $1 $l0$ >>> ' INTO cmd USING 42; >>> RAISE INFO '%',cmd; >>> END; >>> $function$ >>> >>> SELECT f(); >>> INFO: ALTER TABLE test ALTER COLUMN i SET DEFAULT $1 >>> >>> The command to be executed is DML (SELECT). The substitution doesn't take >>> place. >> >> yes. You cannot call SELECT 'ALTER ...' > > SELECT 'ALTER ...' is to select a text string into a variable! > You mean the parse will give a look into my constant string to see > whether I'm trying to build a dynamic DDL command? > This would be awesome! >
sorry. This is too much complicate. Why do you use SELECT? just EXECUTE 'ALTER ... SET DEFAULT ' || 42. There is other argument against USING + DDL. ALTER clause has syntax: ALTER TABLE x SET DEFAULT expr. but with USING clause you can pass only a value Pavel > -- > Vincenzo Romano > NotOrAnd Information Technologies > NON QVIETIS MARIBVS NAVTA PERITVS > -- Sent via pgsql-general mailing list (pgsql-general@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-general