oracle 实现map,oracle – PL/SQL中类似Map的对象类型?

我想在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的值是另一个映射,键是x和y,x的值是“what’s”和值你是“向上”.

这就是Java中的样子:

Map map = new HashMap();

map.set("a", "Hello");

map.set("b", "World");

Map child = new HashMap();

child.set("x", "What's");

child.set("y", "up");

map.set("c", child);

现在我知道像“对象”这样的东西是无法存储的.我需要的是一个对象,它可以存储与该对象类型相同的对象列表.所以基本上,一棵树,是的.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Oracle,自定义类型含有map、order、constructor的应用场合可以是: 1. 数据库存储复杂数据类型 在一些情况下,我们需要在Oracle数据库存储具有复杂结构的数据,例如一个包含多个字段的对象或者一个包含键值对的集合。此时,我们可以使用自定义类型来定义这些数据类型,并且在数据库进行存储和检索。 举例说明: 我们可以定义一个包含姓名、年龄和地址的人员对象: ``` CREATE TYPE person AS OBJECT ( name VARCHAR2(50), age NUMBER, address VARCHAR2(100) ); ``` 我们也可以定义一个包含多个键值对的集合对象: ``` CREATE TYPE student AS OBJECT ( scores MAP VARCHAR2(50), -- 键值对 order MEMBER FUNCTION get_score(subject VARCHAR2) RETURN NUMBER -- 获取成绩 ); ``` 2. PL/SQL的复杂数据类型PL/SQL,我们也可以使用自定义类型来定义复杂的数据类型,以便在程序更方便地处理数据。 举例说明: 我们可以定义一个包含多个字段的结构体类型: ``` CREATE TYPE emp_type IS OBJECT ( empno NUMBER, ename VARCHAR2(50), job VARCHAR2(50), mgr NUMBER, hiredate DATE, sal NUMBER, comm NUMBER, deptno NUMBER ); ``` 我们也可以定义一个包含键值对的集合类型: ``` CREATE TYPE score_type IS TABLE OF NUMBER INDEX BY VARCHAR2(50); ``` 3. 跨平台数据传输 在不同的应用程序或系统之间进行数据传输时,可能会涉及到不同的数据类型和数据格式。此时,我们可以使用自定义类型来定义数据类型,并且在不同的平台之间进行数据传输。 举例说明: 我们可以定义一个包含姓名、年龄和地址的人员对象: ``` CREATE TYPE person_type AS OBJECT ( name VARCHAR2(50), age NUMBER, address VARCHAR2(100) ); ``` 然后,我们可以在Java程序使用JDBC来访问Oracle数据库,并且将person_type对象进行序列化和反序列化,以便在Java程序和Oracle数据库之间进行数据传输。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值