gpt4 book ai didi

oracle - PL/SQL 中的类映射对象类型?

转载 作者:行者123 更新时间:2023-12-04 09:34:04 25 4
gpt4 key购买 nike

我想在 PL/SQL 中编写一个类似于 map 的对象类型。我的意思是一个键值对列表,其中一个值可以是另一个键值对列表。很简单,或者我是这么想的。这是两个简化的

CREATE OR REPLACE TYPE TKey AS OBJECT
(
name varchar2(240),
value_text varchar2(2000),
value_map TMap
)

CREATE OR REPLACE TYPE TMap AS TABLE OF TKey

也许不是那么简单,因为现在我有一个“先有鸡还是先有蛋”的问题。如果我先把 TKey 放进去,他会提示 TMap 没有定义。如果我先放入 TMap,他会提示 TKey 没有定义。如果我把TKey放进去,把value_map这行去掉,然后加上TMap类型,然后尝试替换TKey类型,他不会允许的。

我倒霉了吗?这样的构造在 PL/SQL 中是不可能的吗?

提前致谢

澄清:
我想要的是一些东西,它可以给我这个:
包含键 a、b 和 c 的映射。 a 的值是 varchar“hello”,b 的值是 varchar“world”,c 的值是另一个映射,键为 x 和 y,x 的值是“what's”和值y 处于“向上”状态。

这就是它在 Java 中的样子:
Map<String, Object> map = new HashMap<String, Object>();
map.set("a", "Hello");
map.set("b", "World");
Map<String, Object> child = new HashMap<String, Object>();
child.set("x", "What's");
child.set("y", "up");
map.set("c", child);

现在我知道像“对象”这样能够存储任何东西是不可能的。我需要的是一个对象,它可以存储与该对象具有相同类型的对象列表。所以基本上,一棵树,是的。

最佳答案

您可以使用关联数组。从 PL/SQL 用户指南:

了解关联数组(Index-By Tables)

关联数组是一组键值对,其中每个键都是唯一的,用于在数组中定位相应的值。键可以是整数或字符串。

第一次使用键分配值会将该键添加到关联数组。使用相同键的后续分配更新相同的条目。选择唯一的 key 很重要。例如,键值可能来自数据库表的主键、数字散列函数或连接字符串以形成唯一的字符串值。

例如,这里是一个关联数组类型和该类型的两个数组的声明,使用字符串作为键:

示例 5-1 声明集合类型

DECLARE TYPEpopulation_type IS TABLE OF NUMBER INDEX BY VARCHAR2(64);
country_population 人口类型;
大洲人口人口类型;
多少号;
其中 VARCHAR2(64);
开始
country_population('格陵兰') := 100000; -- 创建新条目
country_population('冰岛'):= 750000; -- 创建新条目
-- 查找与字符串关联的值
howmany := country_population('格陵兰');
大陆人口('澳大利亚'):= 30000000;
大陆人口('南极洲'):= 1000; -- 创建新条目
大陆人口('南极洲'):= 1001; -- 替换之前的值
-- 返回 'Antarctica',因为它按字母顺序排在第一位。
which := continent_population.FIRST;
-- 返回按字母顺序排在最后的“澳大利亚”。 which := continent_population.LAST;
-- 返回最后一个key对应的值,在此
——以澳大利亚人口为例。
数量:= 大洲人口(大洲人口。最后);
结尾;
/

关于oracle - PL/SQL 中的类映射对象类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/996386/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com