我想在 PL/SQL 中编写一个类似地图的对象类型。我的意思是一个键值对列表,其中一个值可以是另一个键值对列表。很简单,至少我是这么想的。这是两个简化的
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 的值是另一个 map,键为 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);
现在我知道像“对象”这样能够存储任何东西的东西是不可能的。我需要的是一个对象,它可以存储与该对象具有相同类型的对象列表。所以基本上,一棵树,是的。