2013-04-11 4 views
15

seine Hier ist mein einfacher anonymer Code-Block ist:psql - Schleifenvariable der Schleife über Zeilen müssen einen Datensatz oder Zeile Variable oder eine Liste von skalaren Variablen

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; 
$$; 

Wenn ich es laufen:

psql -f test.sql 

ich bekomme diese Fehlermeldung:

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 
      ^

Antwort

39

es selbst gelöst, 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

Bezug: https://dba.stackexchange.com/q/191694/104401 – Wildcard