oracle map order,Oracle使用对象类型5(MAP方法的对象类型)

.... ..真的好攰好攰好攰...快坚持不住了.. 谁来救救我!

MAP方法用于将对象实例映射为标量数值(number,date,varchar2等)。

对于相同对象类型不同对象实例来说,因为他们的数据类型时复合数据类型,所以对象实例之间不能直接进行比较。

为了排序多个对象实例的数据,可以在建立对象类型时定义MAP方法。

注意:一个对象类型最多只能定义一个MAP方法,并且MAP方法和ORDER方法不能同时使用。

下面以建立和使用对象类型person_typ4为例:

对象类型person_typ4将用于描述人员信息,该对象类型包含有姓名,性别,出生日期三个属性,另外还包含有用于取得人员年龄的一个MAP方法:

CREATE OR REPLACE TYPE person_type AS OBJECT(

name VARCHAR2(10),gender VARCHAR2(2),birthdate DATE,MAP MEMBER

FUNCTION getage RETURN VARCHAR2

);

/

因为对象类型规范person_typ4定义了MAP函数getage,所以必须要通过对象类型体实现该函数:

CREATE OR REPLACE TYPE BODY person_typ4 IS

MAP MEMBER FUNCTION getage RETURN VARCHAR2

IS

BEGIN

RETURN TRUNC((SYSDATE-birthdate)/365);

END;

END;

/

当建立了对象类型规范和对象类型体之后,就可以使用该对象类型及其方法。基于对象类型person_typ4建立对象表employee_tab4并为其插入数据:

CREATE TABLE employee_tab4(

eno NUMBER(6),person person_typ4,

sal NUMBER(6,2),job VARCHAR2(10)

);

INSERT INTO employee_tab4(eno,sal,job,person)

VALUES(1,1500,'图书管理员',person_typ4('玛丽','女','11-1月-76'));

INSERT INTO employee_tab4(eno,sal,job,person)

VALUES(2,2000,'高级焊工',person_typ4('王明','男','11-5月-75'));

INSERT INTO employee_tab4(eno,sal,job,person)

VALUES(3,2500,'高级工程师'person_typ4('黎明','男','11-5月-70'));

在执行了以上语句之后,就会建立对象表employee_tab4,并为其插入三条数据。因为在建立对象类型时定义了MAP方法,所以可以在PL/SQL使用MAP方法排序对象实例的数据。

下面以比较对象表employee_tab4的前两条数据:

DECLARE

TYPE person_table_type IS TABLE OF person_typ4;

person_table person_table_type;

v_temp VARCHAR2(100);

BEGIN

SELECT person BULK COLLECT INTO person_table

FROM employee_tab4;

IF

person_table(1).getage()>person_table(2).getage()

THEN

v_temp:=person_table(1).name||'比'||person_table(2).name||'大';

ELSE

v_temp:=person_table(1).name||'比'||person_table(2).name||'小';

END IF;

dbms_output.put_line(v_temp);

END;

/

玛丽比王明小

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值