【问题标题】:How to modify a field in an array of records如何修改记录数组中的字段
【发布时间】:2019-06-21 11:56:03
【问题描述】:

我来自 Oracle 世界并尝试迁移一个包过程。 本地类型在 Oracle 包中声明:

  TYPE t_class_record IS RECORD
  (
     id_class       classes.id_class%TYPE,
     field1         number,
     field2         number
  );

  TYPE t_classes_table IS TABLE OF t_class_record
     INDEX BY BINARY_INTEGER;

  l_classes_table                     t_classes_table;

l_classes_table 由 SELECT 语句初始化,随后单个数组元素的单个字段被修改如下:

  l_classes_table(i).field1 := l_value;

到目前为止,我在 PostgreSQL 中完成了以下工作:

  • 定义了与上面列出的结构相对应的复合类型:

    CREATE TYPE t_class_record AS (id_class CHARACTER VARYING,
                                   field1   INTEGER,
                                   field2   INTEGER);
    
  • 使用 t_class_record 数组类型的局部变量定义了一个过程:

    l_classes_array                   t_class_record [];
    

但是当我尝试修改数组中记录的字段时,会出现语法错误。

l_classes_array[i].field1 := l_value;

错误是ERROR: syntax error at or near "." Position: 12414,其中位置指向.[i] 之后。我不知道是什么导致了这个语法错误。

我的目标是将记录数组存储在一个变量中,以便我能够修改各个数组元素的各个字段。

【问题讨论】:

    标签: postgresql plpgsql postgresql-11


    【解决方案1】:

    下面的Q/A有你的问题的原因和解决方法:

    PL/pgSQL: accessing fields of an element of an array of custom type

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多