我想使用PostgreSQL将值动态分配到数组中。
到目前为止我做了什么:-我已将_tmp_user_data
声明为_tmp_user_data character varying[][];
并且我已经在posgresql cursor
_counter := 0;
open _user_data_cursor for execute _sql_user_data;
Loop
FETCH _user_data_cursor INTO _tmp_user_name, _tmp_crop_name;
If found Then
RAISE NOTICE '_tmp_crop_name name:%', _tmp_crop_name;
_tmp_user_data[_counter]['user_name'] := _tmp_user_name;
else
exit;
end if;
_counter := _counter + 1;
END LOOP;
CLOSE _user_data_cursor;
我一直遇到以下错误
错误:整数的无效输入语法:“用户名”
核心问题是Postgres数组仅接受整数下标,而不接受字符串。
_tmp_user_data[_counter]['user_name']
类似的事情可能起作用:
_tmp_user_data[_counter][1] -- _counter being an integer variable
Start reading the manual here.
也没有数据type varying[][]
(尽管可以接受拼写)。数据类型为character varying[]
(或varchar[]
)。 Postgres数组可将相同的type用于任意数量的尺寸。参见:
通常不需要显式游标在PL / pgSQL中循环。参见:
而且通常,有一种出色的解决方案,根本没有任何循环...