设为首页 加入收藏

TOP

Oracle的对象类型(二)
2015-07-24 11:44:58 来源: 作者: 【 】 浏览:9
Tags:Oracle 对象 类型
DENTIFIER,OID),它可以存储在名称为REF的列中。对象引用使用REF类型进行定义,通常都可以用作指向对象表中对象的指针,可以使用对象引用为对象表之间的关系建立模型,而不是使用外键。

使用REF()函数来检索对象的OID。

例4:

SELECT REF(s) FROM student4 s

其结果:

REF(S)
000028020928DFC3EBA9874580B244E5CDEBF8F899401875D0C7E041528E5969734EB8E5B5014000F50000
0000280209AFF154978FF84383BAFDD806C52FD6F3401875D0C7E041528E5969734EB8E5B5014000F50001

这一长串数字和字母的组合就是OID,它标识数据库中对象的位置。可以将OID存储在一个对象引用中,通过它就可以访问它引用的对象。

可以使用对象引用为对象表之间的关系建立模型。使用REF类型来定义一个对象引用。语法如下:

CREATE TABLE table_name(
    ref_name REF type_name SCOPE IS table_type_name
);

其中,SCOPE IS子句将对象引用限制在特定表中的对象上。

例5:

CREATE TABLE student_object_ref(
       ID NUMBER(4),
       stu_ref REF stu SCOPE IS student4
)

插入两条数据:

INSERT INTO student_object_ref(id,stu_ref) VALUES
(1,(SELECT REF(s) FROM student4 s WHERE s.name='siege'));
INSERT INTO student_object_ref(id,stu_ref) VALUES
(2,(SELECT REF(s) FROM student4 s WHERE s.name='cage'))

查询结果:

    ID  STU_REF
    1   000022020828DFC3EBA9874580B244E5CDEBF8F899401875D0C7E041528E5969734EB8E5B5
    2   0000220208AFF154978FF84383BAFDD806C52FD6F3401875D0C7E041528E5969734EB8E5B5

现在我们通过DEREF函数来查询结果:

SELECT DEREF(stu_ref) FROM student_object_ref

其结果如下:

DEREF(STU_REF).NAME DEREF(STU_REF).SEX  DEREF(STU_REF).BIRTHDAY DEREF(STU_REF).NOTE
siege   M   28/02/1991  NOTHING
cage    M   28/02/1991  NOTHING

此时不再显示标识符,而是对象引用对应的数据。我们可以通过对象引用来进行数据查询:

SELECT id,DEREF(stu_ref).name,DEREF(stu_ref).sex,DEREF(stu_ref).note FROM student_object_ref

我们也可以对对象引用进行更改:

UPDATE student_object_ref SET stu_ref=(SELECT REF(s) FROM student4 s WHERE s.name='cage')
首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇计算Oracle数据库中两个日期之间.. 下一篇oracle使用comment语句添加表注释

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·switch520最新的地址 (2025-12-24 19:19:41)
·微信聊天功能使用了 (2025-12-24 19:19:39)
·websocket和普通的so (2025-12-24 19:19:36)
·Python中文网 - 人生 (2025-12-24 18:49:47)
·【整整648集】这绝对 (2025-12-24 18:49:44)