oracle的object对象,ORACLE PL/SQL 对象(object)学习笔记(二)

4、对象依赖性

CREATE OR REPLACE TYPE Obj1 AS OBJECT (

f1 NUMBER,

f2 VARCHAR2(10),

f3 DATE

);

/

CREATE OR REPLACE TYPE Obj2 AS OBJECT (

f1 DATE,

f2 CHAR(1)

);

/

CREATE OR REPLACE TYPE Obj3 AS OBJECT (

a Obj1,

b Obj2

);

/

OBJ3依赖于OBJ1和OBJ2。所以删除或修改OBJ1或OBJ2之前没有首先删除OBJ3是非法的。

5、对象标识符和对象引用

对象标识符(object identifier ,简称为OID)是某种类型的永久对象的唯一定位符。与ROWID变量相类似(它唯一的标识了一行),对象标识符唯一标识了一个对象。

我们知道,REF CURSOR变量与CURSOR变量是不同的,它仅仅是指向一个游标的指针。对象引用也是一样。对象引用是一个指向对象的指针,而不是对象本身。在声明部分或表定义中声明对象引用的语法是:

Variable_name REF object_type;

这里Variable_name是对象引用的名字,而object_type是对象类型。

例如下面定义的ClassObj类型包含一个指向RoomObj的引用:

CREATE OR REPLACE TYPE ClassObj AS OBJECT (

department CHAR(3),

course NUMBER(3),

description VARCHAR2(2000),

max_students NUMBER(3),

current_students NUMBER(3),

num_credits NUMBER(1),

room REF RoomObj

);

/

6、在DML语句中使用对象

1)INSERT

在需要使用对象的INSERT 语句中, 你可以使用对象构造函数,或者一个对象的PL/SQL变量,它们都包含了要插入的对象。对于INSERT语句而言,对象的行为方式和标量类型是很相似的。

2)UPDATE

在UPDATE语句中的WHERE或VALUES子句中,对象可以被用作联编变量。

下面的块创建了一个新的房间,并更新classes表以反映新插入的数值。

DECLARE

v_NewRoom RoomObj :=

RoomObj(99990, 'Building 7', 200, 50, 'Discussion Room F');

v_RoomRef REF RoomObj;

BEGIN

-- The RETURNING clause on this statement puts a reference to the

-- newly inserted room into v_RoomRef.

INSERT INTO rooms r VALUES (v_NewRoom)

RETURNING REF(r) INTO v_RoomRef;

UPDATE classes

SET room = v_RoomRef

WHERE department = 'NUT'

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值