数组 – Postgres – 数组for循环
发布时间:2020-12-13 16:39:29 所属栏目:百科 来源:网络整理
导读:我正在编写一个plpgsql脚本。 我想从二维数组中逐个获取数组内容。 DECLARE m varchar[]; arr varchar[][] := array[['key1','val1'],['key2','val2']];BEGIN for m in select arr LOOP raise NOTICE '%',m; END LOOP;END; 但上面的代码返回 {{key1,val1},{k
我正在编写一个plpgsql脚本。
我想从二维数组中逐个获取数组内容。 DECLARE m varchar[]; arr varchar[][] := array[['key1','val1'],['key2','val2']]; BEGIN for m in select arr LOOP raise NOTICE '%',m; END LOOP; END; 但上面的代码返回 {{key1,val1},{key2,val2}} 在一行。我想要能够循环并调用另一个函数,其参数如下: another_func(key1,val1)
由于PostgreSQL 9.1有方便的
FOREACH :
DO $do$ DECLARE m varchar[]; arr varchar[] := array[['key1','val2']]; BEGIN FOREACH m SLICE 1 IN ARRAY arr LOOP RAISE NOTICE 'another_func(%,%)',m[1],m[2]; END LOOP; END $do$ 旧版本的解决方案: DO $do$ DECLARE arr varchar[] := '{{key1,val2}}'; BEGIN FOR i IN array_lower(arr,1) .. array_upper(arr,1) LOOP RAISE NOTICE 'another_func(%,arr[i][1],arr[i][2]; END LOOP; END $do$ 此外,PostgreSQL类型系统的varchar []和varchar [] []之间没有区别。我更详细地解释了here。 DO语句至少需要PostgreSQL 9.0,LANGUAGE plpgsql是默认的(所以你可以省略声明)。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |