psql - 循环行的循环变量必须是记录变量或行变量或标量变量列表

psql - loop variable of loop over rows must be a record or row variable or list of scalar variables

提问人:Richard Knop 提问时间:4/11/2013 更新时间:5/6/2022 访问量:76016

问:

这是我简单的匿名代码块:

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
            ^
PostgreSQL PSQL

评论


答:

146赞 Richard Knop 4/11/2013 #1

我自己解决了,嗯。需要声明 .arow record

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

评论

3赞 Aashutosh Rathi 6/18/2019
谢谢救了我的一天。你能删除那个 s(a) 吗,它让我困惑了一段时间:(
-1赞 rathna jayaraman 5/6/2022 #2

如何检索错误 行循环的循环变量必须是记录变量或标量变量列表 行 : For c_ rec IN (select datasourcenm,

评论

0赞 Community 5/10/2022
正如目前所写的那样,你的答案尚不清楚。请编辑以添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。您可以在帮助中心找到有关如何写出好答案的更多信息。