My bad on the back tick. No idea why it turned that way OK got that David.
The idea is that I have the pk columns in an array which I would like to manipulate from the array itself rather than running same query variations multiple times For example I get in foo {item_id,show_id} And from here on I was looking to get say a.item_id , a.show_id and all sort of variations Thanks for help On Nov 21, 2016, at 4:26 PM, David G. Johnston <david.g.johns...@gmail.com> wrote: > On Mon, Nov 21, 2016 at 3:09 PM, Armand Pirvu (home) <armand.pi...@gmail.com> > wrote: > Hi > > Is there anyway I can pass a variable in the array_to_string function ? > > > Yes, just like you can pass variables to any other function... > > > CREATE OR REPLACE FUNCTION test1 () RETURNS void AS $$ > DECLARE > foo text; > foo1 text; > begin > execute > 'select ARRAY( SELECT d.COLUMN_NAME::text from > information_schema.constraint_table_usage c, > information_schema.key_column_usage d ' > || > 'where c.constraint_name=d.constraint_name and c.table_name=d.table_name and > c.table_schema=' > || > quote_literal(‘myschema') > || > ' and c.table_schema=d.table_schema and c.constraint_name like ' > || > quote_literal('%_pkey%') > || > ') ' into foo; > raise notice '%', foo; > foo1 :=ARRAY_TO_STRING(foo, ', '); > raise notice '%', foo1; > END; > $$ LANGUAGE plpgsql ; > > > The idea is that I want to slice and dice and not run the query x amount of > times > > > I would suggest you learn to use the "format()" function, EXECUTE USING, and > dollar quoting. > > > So, I copy-pasted your example and placed it into a DO block > > The character before "myschema" came out as a back-tick instead of a > single-quote. > > array_to_string has the signature (text[], text) but you've defined foo as > being just text. Changing that results in a query that executes - though > given my system doesn't have conforming data I get no results. > > David J.