如何在PostgreSQL过程中为多维数组赋值

问题描述 投票:0回答:1

我想使用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;

我一直遇到以下错误

错误:整数的无效输入语法:“用户名”

postgresql multidimensional-array plpgsql
1个回答
0
投票

核心问题是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中循环。参见:

而且通常,有一种出色的解决方案,根本没有任何循环...

© www.soinside.com 2019 - 2024. All rights reserved.