比较对象值
1可以将对象类型作为一个普通的数据类型使用。
2使用比较操作符时,需要提供类型的映射函数,类型函数必须返回和源列相同的数据类型,并且不同执行提交和回滚操作。
3比较操作符
=,<,>,<=,>=,in,like,between

测试数据

--创建对象类型头
create or replace  type class4 as object (
id number,
name varchar2 ( 20 ),
member  function get_name(no varchar2) return varchar2
) ;



--创建对象体
create or replace type body class4 as
 member  function get_name(no varchar2) return varchar2 as 
 name varchar2(20);
 begin
select sname into name from zhou.student where sno=no ;
 return name;
  end;
end;


--创建对象表
create table stu_class of class4;

--插入数据
insert into stu_class values(1101,'语文');
insert into stu_class values(1102,'数学');

举例
= ,< > ,in

select * from stu_class sc
where value(sc) =class4(1101,'语文');


select * from stu_class sc
where value(sc) <>class4(1101,'语文');


select * from stu_class sc
where value(sc) in (class4(1101,'语文'),class4(1102,'数学'));

这里写图片描述

>
select * from stu_class sc
where value(sc) > class4(1101,’语文’);

这里写图片描述

错误原因:class4的函数定义没有使用map或order

修改对象类型(先删除使用该对象类型的表)

create or replace  type class4 as object (
id number,
name varchar2 ( 20 ),
map member  function getString  return varchar2--使用map
) ;




create or replace type body class4 as
 map  member function getString  return varchar2 as --使用map
 name varchar2(20);
 begin
 return id||name;
  end;
end;

这里写图片描述

posted on 2017-06-02 23:15  2637282556  阅读(98)  评论(0编辑  收藏  举报