PostgreSQL цикл FOR

Question:

In the process of writing a function for postgresql, a problem arose: it is necessary to form a SQL query, and subsequently "feed" it to the FOR loop. And since the request is generated dynamically (depending on the conditions), then I did not think of anything better than writing it into a variable of type text . The loop refuses to accept a string as a SQL query. Sample:

DECLARE
    table_string RECORD;
    query_string text := '';
BEGIN

query_string := 'SELECT * FROM tablename';

-- проблемный цикл
FOR table_string IN query_string
LOOP
   -- какой-то код
END LOOP;
END;

The plpgsql function language.

pgAdmin III: "Syntax error (approximate position of" query_string ") LINE 10: FOR table_string IN query_string" (refers to table_string)

How to solve this problem? Thanks in advance!

Answer:

This solution was suggested by the author of the question in his previous post.

The solution turned out to be much simpler:

FOR table_string IN EXECUTE query_string

It was enough to add EXECUTE before the variable containing the SQL query.

Scroll to Top