永发信息网

oracle 数据库 ref 数据类型怎么用

答案:1  悬赏:20  手机版
解决时间 2021-03-04 00:58
  • 提问者网友:欺烟
  • 2021-03-03 04:42
oracle 数据库 ref 数据类型怎么用
最佳答案
  • 五星知识达人网友:野慌
  • 2021-03-03 06:17
Oracle在关系数据库外,融入了面向对象的元素,比如可以创建type,type之间可以继承,type可以带构造函数、排序函数、各种各样的成员函数、存储过程等等。
  对象表是指该表的一行就是一个对象,有一个OID(object ID),对象表之间没有主外键关联的概念,为了体现这层关系,oracle中用了ref对象来实现。
  下面例子,创建一个地址类型,一个人员类型,人员有地址属性,所以在人员类型中设置一个ref address来确定指向他所在地址的指针。
  --创建地址类型
  create type address as object(
  street varchar2(35),
  city varchar2(15),
  state char(2),
  zip_code integer
  );
  create table addresses of address; --创建地址对象表--创建人员类型
  create type person as object(
  first_name varchar2(15),
  last_name varchar2(15),
  birthday date,
  home_address ref address, --指向对应的地址,该地址应该在另外一个对象表中的一行phone_number varchar2(15)
  );
  CREATE TABLE persons of person; --创建人员对象表--插入一个地址
  insert into addresses values(address('nanhai','shenzhen','gd','518054'));insert into addresses values(address('shennan','shenzhen','gd','518057'));--插入一个人员,注意这里的home_address部分是如何插入一个ref address的。
  insert into persons values(person('shitou','haha',to_date('1982-07-05','yyyy-mm-dd'),(select ref(a) from addresses a where street='nanhai'),'1355555555'));
  --也可以用下面的过程来插入一个人员记录
  declare
  addref ref address ;
  begin
  select ref(a) into addref from addresses a where street='nanhai';insert into persons
  values (person('shitou','haha',to_date('1982-07-05','yyyy-mm-dd'),addref,'1355555555'));
  commit;
  end;
  --查询某人的地址信息
  select first_name,deref(home_address) from persons;--修改地址
  update persons set home_address=(select ref(a) from addresses a where street='shennan');--删除某个人员
  delete from persons where first_name='shitou';--删除某个地址的相关人员记录
  delete from persons where home_address=(select ref(a) from addresses a where street='nanhai');
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯