oracle map order,oracle面向对象技术中的map和order方法有何不同?

MAP方法MAP方法用于将对象实例映射为标量数值(NUMBER,DATE,VARCHAR2等);对于相同对象类型不同对象实例来说,因为他们的数据类型是复合数据类型,所以对象实例之间不能直接进行比较。为了排序多个对象实例的数据,可以在建立对象类型时定义MAP方法。*注意:一个对象类型最多只能定义一个MAP方法,并且MAP方法和ORDER方法不能同时使用。1、建立对象类型规范和对象类型体test_map_method_obtype

/**

建立对象类型规范和对象类型体test_map_method_obtype

MAP方法主要用于获取雇员的年龄

**/

--建立对象类型规范test_map_method_obtype

CREATE OR REPLACE TYPE test_map_method_obtype AS OBJECT(

nameVARCHAR2(30),

genderVARCHAR2(2),

birthdate DATE,

MAP MEMBERFUNCTION get_age_fnc RETURN NUMBER

);

/

--建立对象类型体test_map_method_obtype

CREATE OR REPLACE TYPE BODY test_map_method_obtype AS

MAP MEMBERFUNCTION get_age_fnc RETURN NUMBER IS

BEGIN

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

END get_age_fnc;

END;

/

2、建立对象表test_map_method并追加数据

/**

基于对象类型test_map_method_obtype

建立对象表test_map_method并为其插入数据

**/

--建立对象表test_map_method

DROP TABLE test_map_method PURGE;

CREATE TABLE test_map_method(

empno NUMBER(2) ,

employee test_map_method_obtype NOT NULL,

job VARCHAR2(20) NOT NULL,

sal NUMBER(7,2)

);

--向对象表test_map_method插入数据

INSERT INTO test_map_method

VALUES(10,test_map_method_obtype('张三', '男',

TO_DATE('1990-02-10', 'yyyy-mm-dd')),'CLERK',2000);

INSERT INTO test_map_method

VALUES(20,test_map_method_obtype('李四', '男',

TO_DATE('1989-08-01', 'yyyy-mm-dd')),'SALESMAN',3000);

INSERT INTO test_map_method

VALUES(30,test_map_method_obtype('王丽', '女',

TO_DATE('1988-06-09', 'yyyy-mm-dd')),'MANAGER',6000);

COMMIT;

3、调用MAP方法进行雇员年龄的比较;

DECLARE

--定义嵌套表test_tbtype

TYPEtest_tbtypeIS TABLE OF test_map_method_obtype;

--声明嵌套表类型变量t_person

t_person test_tbtype;

BEGIN

--批处理数据,将对象表中的对象列employee

--的数据存储在嵌套表t_person中

SELECT employee

BULK COLLECTINTO t_person

FROM test_map_method;

--比较年龄大小

IF t_person(1).get_age_fnc() >t_person(2).get_age_fnc() THEN

DBMS_OUTPUT.put_line(t_person(1).name||'比'||t_person(2).name||'大');

ELSE

DBMS_OUTPUT.put_line(t_person(1).name||'比'||t_person(2).name||'小');

END IF;

END;

/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值