0

我在将 plsql 应用程序迁移到 edb 时遇到问题。当前的问题是,我们有嵌套类型,例如:

 TYPE personas_rt IS RECORD (adulto numeric, nino numeric);  
 TYPE personas_aat IS TABLE OF personas_rt   INDEX BY BINARY_INTEGER;
 TYPE room_type_rt IS RECORD (id numeric, personas_aa personas_aat);
 TYPE room_type_aat  IS TABLE OF room_type_rt         INDEX BY BINARY_INTEGER;

在 oracle plsql 程序中,我可以执行以下操作:

 hab_list (1).personas_aa (1).adulto := 2;

我的问题 iis,如何在 edb 中做到这一点?

我试图将括号和括号放在任何地方,但我找不到解决方案。

这肯定是一个非常愚蠢的问题,但你能告诉我这样做的语法吗?

谢谢

4

1 回答 1

1

您可以在 PostgreSQL 中创建这样的类型:

CREATE TYPE personas_rt AS (adulto bigint, nino bigint);
CREATE TYPE room_type_rt AS (id bigint, personas_aa personas_rt[]);

然后,如果您有hab_listtype的记录room_type_rt[],您可以在 PL/pgSQL 中执行此操作:

((hab_list[1]).personal_aa[1]).adulto := 2;

但通常最好解开这种难以形容的嵌套混乱,这与关系数据库设计不相称。

于 2021-03-09T13:04:43.753 回答