By using db<>fiddle, you agree to license everything you submit by Creative Commons CC0.
create or replace type height as object
(
val number,
constructor function height return self as result,
constructor function height (val number) return self as result,
order member function compare2 (other height) return integer,
member function compare (o1 height,o2 height) return integer
);
/
create or replace type body height is
constructor function height return self as result is
begin
self.val := null;
end;
constructor function height (val number) return self as result is
begin
self.val := val;
return;
end;
order member function compare2 (other height) return integer is
begin
RETURN compare(SELF,other);
end;
member function compare (o1 height,o2 height) return integer is
begin
if o1.val > o2.val then return 1;
elsif o1.val < o2.val then return -1;
else return 0;
end if;
end;
end;
/
CREATE TABLE people (
name varchar2(50),
height height
);
insert into people values ('Foo', height(150));
1 rows affected
insert into people values ('Bar', height(130));
1 rows affected
insert into people valueS ('Baz', height(180));
1 rows affected
select p.height.val from people p order by height ASC;
HEIGHT.VAL |
---|
130 |
150 |
180 |
select p.height.val from people p order by height DESC;
HEIGHT.VAL |
---|
180 |
150 |
130 |