Gena Yakovlev
Gena Yakovlev

Reputation: 1

Can't run "for loop" in PostgreSQL

I'm trying to create temp table and insert some data from LOOP. I need to count all strings on each table, but i have error like this:

ERROR: ОШИБКА:  переменная цикла по кортежам должна быть переменной типа запись или списком скалярных переменных
LINE 16: for r in (select "table_name", "name_campaign" from "Table_7...
             ^


SQL state: 42601
Character: 206

Table names all in one existing table.

 do
$body$

declare

   v_count integer;
    
begin

set enable_seqscan = off;

drop table if exists tmp_statyks;

create temp table tmp_statyks(table_name varchar(60), name varchar(60), x_count int);

for r in (select "table_name", "name_campaign" from "Table_7517829240") 
    loop
        execute immediate 'select count(*) from ' || r."table_name" 
            into v_count;
        INSERT INTO tmp_statyks("table_name", "name" , "x_count")
        VALUES (r."table_name",r."name_campaign",v_count);
    end loop;

end
$body$
language 'plpgsql';
select * from tmp_statyks

Upvotes: 0

Views: 1035

Answers (1)

Alex
Alex

Reputation: 866

Just declare r as record:

declare
   v_count integer;
   r record;
begin

Upvotes: 1

Related Questions