2013-04-11 5 views
15

Oto mój prosty anonimowy blok kodu:psql - pętla zmienna pętli nad rzędami musi być zapis lub wiersza zmienna lub lista zmiennych skalarnych

do $$ 
    declare foo varchar(50) := ''; 
    begin 
    for a in 
     select a from (values('foo'), ('bar'), ('fooBar')) s(a) 
    loop 
     foo := a; 
     print foo; 
    end loop; 
    end; 
$$; 

Kiedy uruchamiam go:

psql -f test.sql 

otrzymuję ten błąd:

psql:test.sql:11: ERROR: loop variable of loop over rows must be a record or row variable or list of scalar variables 
LINE 4:  for a in 
      ^

Odpowiedz

39

rozwiązać go samodzielnie, meh:

do $$ 
    declare 
    arow record; 
    foo varchar(50); 
    begin 
    for arow in 
     select a from (values('foo'), ('bar'), ('fooBar')) s(a) 
    loop 
     foo := arow.a; 
     RAISE NOTICE 'Calling cs_create_job(%)', foo; 
    end loop; 
    end; 
$$; 
+0

Powiązane: https://dba.stackexchange.com/q/191694/104401 – Wildcard