Thread: using vars in ddl in procedure call

using vars in ddl in procedure call

From
"Gauthier, Dave"
Date:

Hi:

 

v9.0.1 on linux.

 

Trying (failing) a test to see if I can run ddl in a procedure where elements of the ddl are vars.  Consider...

 

create or replace function newcol (text) returns integer as $$

declare

  newcol alias for $1;

begin

 

  alter table target add column newcol text;

 

return(0);

 

end;

$$ language plpgsql;

 

This successfully adds a column called "newcol" instead of what I passed it as an arg.

 

Any suggestions on how to make this work?

 

Thanks !

 

Re: using vars in ddl in procedure call

From
salah jubeh
Date:
Hello,
you need to use execute command 

i.e.
execute 'alter table ........ ' || newcol || ';'

Regards



From: "Gauthier, Dave" <dave.gauthier@intel.com>
To: "pgsql-general@postgresql.org" <pgsql-general@postgresql.org>
Sent: Wednesday, August 29, 2012 4:56 PM
Subject: [GENERAL] using vars in ddl in procedure call

Hi:
 
v9.0.1 on linux.
 
Trying (failing) a test to see if I can run ddl in a procedure where elements of the ddl are vars.  Consider...
 
create or replace function newcol (text) returns integer as $$
declare
  newcol alias for $1;
begin
 
  alter table target add column newcol text;
 
return(0);
 
end;
$$ language plpgsql;
 
This successfully adds a column called "newcol" instead of what I passed it as an arg.
 
Any suggestions on how to make this work?
 
Thanks !
 


Re: using vars in ddl in procedure call

From
Tom Lane
Date:
"Gauthier, Dave" <dave.gauthier@intel.com> writes:
> Trying (failing) a test to see if I can run ddl in a procedure where elements of the ddl are vars.  Consider...

You'll need to construct the command as a string value and then run it
with EXECUTE.  Beware of quoting issues (quote_ident and quote_literal
are your friends).

            regards, tom lane


Re: using vars in ddl in procedure call

From
"Gauthier, Dave"
Date:
Yup, works like a charm.
Thanks Salah and Tom for the advise !
-dave

-----Original Message-----
From: Tom Lane [mailto:tgl@sss.pgh.pa.us]
Sent: Wednesday, August 29, 2012 11:18 AM
To: Gauthier, Dave
Cc: pgsql-general@postgresql.org
Subject: Re: [GENERAL] using vars in ddl in procedure call

"Gauthier, Dave" <dave.gauthier@intel.com> writes:
> Trying (failing) a test to see if I can run ddl in a procedure where elements of the ddl are vars.  Consider...

You'll need to construct the command as a string value and then run it with EXECUTE.  Beware of quoting issues
(quote_identand quote_literal are your friends). 

            regards, tom lane