I have a dynamic query in my PostgreSQL function:
execute format('select something from %', table_name)
I want to run some code for every record returned by the above statement.
How can I do this?
My first idea is as follows.
I need to do something like this:
execute format('select something from %', table_name)
into my_data;
for my_record in my_data
loop
-- Do something with my_record
end loop;
In order to use the above code in a function or procedure, I need to declare the variables my_data and my_record.
my_record has the data type record. What could the data type of my_data be?
>Solution :
You can use a dynamic statement in a FOR loop:
DECLARE
r record;
BEGIN
FOR r IN
EXECUTE format('select something from %I', table_name)
LOOP
/* "r" now contains a table row */
END LOOP;
END;