plpgsql - 将每个查询的结果推送到数组中
问题描述
我创建了函数:
CREATE FUNCTION citiesById(integer[]) RETURNS text[] AS
$$
DECLARE
element int;
result text[];
BEGIN
FOREACH element IN ARRAY $1
LOOP
WITH t1 as (SELECT city FROM cities WHERE id = element)
SELECT city FROM t1 INTO result;
END LOOP;
RETURN result;
END
$$
LANGUAGE plpgsql;
我正在尝试在循环中执行查询并将每个查询的结果插入到数组中以获得类似['London', 'Paris', 'Moscow']
. 但我收到一个错误:
有正确的方法吗?
解决方案
CREATE FUNCTION citiesById(integer[]) RETURNS text[] AS
$$
DECLARE
element int;
result text[];
BEGIN
FOREACH element IN ARRAY $1
LOOP
result := array_append(result, (SELECT city FROM cities WHERE id = element)::text);
END LOOP;
RETURN result;
END
$$
LANGUAGE plpgsql;
推荐阅读
- c# - 通过 HTTP 客户端与 Web api 通信时发生内部服务器错误
- google-data-studio - 有没有办法在 Google Data Studio 中创建邮政编码级别的地理地图?
- c# - 如何解决错误查询值和目标字段的数量不一样。在 c# windows 应用程序中
- mysql - 创建数据库时在 MySQL 中使用默认字符集和使用默认字符集有什么区别
- google-sheets - 是否可以为从 UNIQUE 生成的范围创建过滤器?
- python - 需要帮助让这个递归函数工作
- ubuntu-12.04 - Ubuntu 12.04 - libc.so.6:未找到版本“GLIBC_2.16”
- python - Openpyxl 将 100% 读取为“int”
- r - 将误差线添加到绘图箱图中的点
- sql - 将变量从存储过程传递给另一个