oracle中object和type,ORACLE PL/SQL 对象(object)学习笔记(一)

1、对象类型规范

创建对象类型规范的语法如下

CREATE [OR REPLACE] TYPE [schema.] type_name

[AUTHID {CURRENT_USER|DEFINER}] AS OBJECT (

Attribute1 datatype,

[attribute2 datatype,…]

[method 1]

[method 2]);

/

其中AUTHID指示将来执行该方法时,必须使用在创建时定义的CURRENT_USER或DEFINER的权限集合。CURRENT_USER是调用该方法的用户,DEFINER是该对象类型的所有者。

1)属性

属性的声明有一些限制,包括:

属性的声明必须出现在方法的声明以前。

数据类型可以是任何数据库数据类型,但是不能包括ROWID,UROWID,LONG,LONG RAW,NCHAR,NCLOB,NVARCHAR2类型,以及PL/SQL的专用类型或在PL/SQL包中定义的类型。

不能使用那些只能在PL/SQL中使用而不能在数据库中使用的数据类型。这些类型包括BINARY_INTEGER,BOOLEAN,PLS_INTEGER,RECORD和REF CURSOR。

不能使用NOT NULL约束,但是可以通过在对象实例上定义一个数据库触发器来达到相同效果。

属性列表中至少必须有一个属性。

不能使用默认值。

注意:不能直接在属性或对象类型上使用%TYPE和%ROWTYPE。但是可以在对象实例的属性上使用它们。

-- This example works fine. %TYPE is applied

-- to the variable, not the object type.

DECLARE

v_discount_price discount_price_obj;

v_price v_discount_price.price%TYPE;

BEGIN

NULL;

END;

/

-- This example throws an exception. %TYPE is applied

-- directly to the object type.

DECLARE

v_price discount_price_obj.price%TYPE;

BEGIN

NULL;

END;

/

复合对象类型

复合对象类型可以以某个属性的数据类型的形式,包含另一个对象类型。

CREATE OR REPLACE TYPE discount_price_obj AS OBJECT (

discount_rate NUMBER(10,4),

price NUMBER(10,2),

MEMBER FUNCTION discount_price RETURN NUMBER)

INSTANTIABLE

FINAL;

/

CREATE OR REPLACE TYPE inventory_obj AS OBJECT (

item_id NUMBER(10),

num_in_stock NUMBER(10),

reorder_status VARCHAR2(20),

price REF discount_price_obj);

/

2)方法

方法就是�

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值