比较对象值
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;