我遍历一个数组,并对数组值和它的键做一些事情。由于PostgreSQL 9.1有foreach循环,所以数组值是没有问题的,但是有什么优雅的方法来获取key吗?我找到的唯一解决方案是为此维护额外的变量:
CREATE OR REPLACE FUNCTION foobar( bar integer[] ) RETURNS integer AS $$
DECLARE
foo integer;
barkey integer;
BEGIN
barkey := 1;
FOREACH foo IN ARRAY bar LOOP
-- do some stuff using foo and barkey
barkey := barkey + 1;
END LOOP;
END;
$$ LANGUAGE plpgsql;
这是最好的解决方案,还是有更优雅的方法?
最佳答案
FOREACH
用于遍历数组值的元素,而不是通过它们的键。 FOR
或 generate_subscripts()
可以用于此。
但一般情况下,数组的键和值之间应该没有关系。
关于arrays - 如何在 pl/pgsql 中获取 foreach 中的当前键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23650126/