【问题标题】:POSTGRES: Appending where clause while using in a loopPOSTGRES:在循环中使用时附加 where 子句
【发布时间】:2014-10-01 18:00:45
【问题描述】:

我正在尝试在 Postgres 中编写一个包含如下循环的函数:

  for r in (SELECT a, b FROM table_abc)
  LOOP
    return next r;
  END LOOP;

我想要做的是附加一个 where 子句。像这样的:

whereClause := 'blah blah'
....
for r in (execute 'SELECT a, b FROM table_abc' ||  whereClause)
  LOOP
    return next r;
  END LOOP;

有没有办法做到这一点?

【问题讨论】:

  • 你知道你可以简单地使用return query select ...吗?或者甚至只是一个sql 函数而不是plpgsql 函数?

标签: sql postgresql stored-procedures


【解决方案1】:

这似乎有效:

    finalsql := 'SELECT a, b FROM table_abc' || whereClause;
    RAISE INFO 'Final sql is: % ', finalsql;

      for r in EXECUTE finalsql
      LOOP
        return next r;
      END LOOP;

我认为括号引起了一些问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-12
    • 1970-01-01
    • 1970-01-01
    • 2011-06-30
    • 1970-01-01
    • 2014-04-04
    • 2014-12-19
    • 1970-01-01
    相关资源
    最近更新 更多