1、定義乙個型別
sql**
create or replace type propertyvalue as object (
number_value number,
string_value varchar2(2000),
date_value date,
member function getnumbervalue return number,
member function getstringvalue return varchar2,
member function getdatevalue return date
);
2、編寫型別的方法
sql**
create or replace type body propertyvalue as
member function getnumbervalue return number as
begin
return number_value;
end getnumbervalue;
member function getstringvalue return varchar2 as
begin
return string_value;
end getstringvalue;
member function getdatevalue return date as
begin
return date_value;
end getdatevalue;
end;
3、使用自定義型別為字段建立表
sql**
create table igrp_sys_properties (
nid number primary key,
propertykey varchar2(2000),
propertyvalue propertyvalue,
propertytype varchar2(2000),
description varchar2(2000),
createuserid number,
modifyuserid number,
createdate date,
modifydate date);
create sequence sq_igrp_propertyid
start with 1
increment by 1
maxvalue 1e27
minvalue 1
nocycle
cache 20
noorder;
-- add comments to the columns
comment on column igrp_sys_properties.nid
is 'pk唯一值';
comment on column igrp_sys_properties.propertykey
is '屬性鍵';
comment on column igrp_sys_properties.propertyvalue
is '屬性值';
comment on column igrp_sys_properties.propertytype
is '屬性型別';
comment on column igrp_sys_properties.description
is '描述';
comment on column igrp_sys_properties.createuserid
is '建立使用者id';
comment on column igrp_sys_properties.modifyuserid
is '修改使用者id';
comment on column igrp_sys_properties.createdate
is '建立日期';
comment on column igrp_sys_properties.modifydate
is '修改日期';
4、新增資料
insert into igrp_sys_properties values
(sq_igrp_propertyid.nextval,
'***',
propertyvalue(10, null,null),
'number',
'***',
101,
101,
sysdate,
sysdate);
commit;
5、查詢資料
sql**
select isp.propertyvalue.getnumbervalue() as myvalues
from
igrp_sys_properties isp
where
isp.propertykey = '***'
and isp.propertytype = 'number';
一些注意的地方:
1. 資料型別使用在資料表後,其body是不能改變的。 因此,要先drop和型別有關的表,才能修改其body。
2. export和import可能會有問題。
3. sql*plus 的copy命令不能使用在自定義的資料型別中。
oracle 自定義型別
而如果沒有這句話 index by binary integer 那就得要顯示對初始化,且每插入乙個元素到numbers型別的table中時,都需要先extend.示例 沒加 index by binary integer 時 declare type my number arr is table ...
oracle 自定義型別
例1 批量 查詢部門號為 10 號的並把它們列印出來 declare type emp table type is table of my emp rowtype index by binary integer v emp table emp table type begin select bulk...
自定義型別
typedef型別 typedef 已有型別 新建型別 示例 typedef double area,volume typedef int number number i1 area a enum enum 列舉型別名 enum week 預設sun 0,可以比較 如果修改必須形如enum week...