2013-04-11 706 views
15

的名单这里是我的简单的匿名代码块:PSQL - 超过行循环的循环变量必须是一个记录或者行变量或标量变量

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

当我运行它:

psql -f test.sql 

我得到这个错误:

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 
      ^

回答

39

解决它自己,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

相关:https://dba.stackexchange.com/q/191694/104401 – Wildcard 2017-11-25 06:00:05