比较对象值

来源:互联网 发布:钢结构厂房起脊算法 编辑:程序博客网 时间:2024/06/10 00:58

比较对象值
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); beginselect 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 scwhere value(sc) =class4(1101,'语文');select * from stu_class scwhere value(sc) <>class4(1101,'语文');select * from stu_class scwhere 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;

这里写图片描述