|
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')
|