【发布时间】:2023-03-27 19:45:01
【问题描述】:
我正在尝试编写一个非常简单的 pgsql 语句来遍历一个简单的状态缩写数组。
CREATE OR REPLACE FUNCTION my_schema.showState()
RETURNS text AS
$$
DECLARE
my_array text[] := '["az","al", "ak", "ar"]'
BEGIN
FOREACH state IN my_array
LOOP
RETURN SELECT format('%s', state);
END LOOP;
END;
$$ LANGUAGE plpgsql;
SELECT * FROM showState();
我正在使用 PostgresSQL 版本 11+。我一直收到错误ERROR: syntax error at or near "BEGIN" 我想在这里看到的输出现在只是看到结果窗口中打印的状态缩写。像这样:
我在这里做错了什么?
【问题讨论】:
-
Edit 这个问题展示了 before
FOREACH是什么。理想情况下显示整个函数/过程/DO/... -
而且你不能只在
PL/pgSQL中的SELECT没有选择的数据到某个地方(变量、返回缓冲区,...)。所以你的无目标SELECT将是下一个问题。 -
请向我们展示您完整的存储过程(或函数)。你到底想在这里实现什么?你期望的输出是什么?
-
该代码不会产生您发布的错误。见dbfiddle.uk/…。如果您需要帮助,您真的应该发布产生错误的代码。
-
已经有内置函数了:
unnest():dbfiddle.uk/…
标签: postgresql loops foreach format