oracle的参照变量

 
Q4 ,oracle 的参照变量:oracle中的参照变量有两种,ref cursor和ref obj_type。是指用于存放数值指针的变量。通过使用参照变量,可以使得应用程序共享相同对象,从而降低占用空间。
Ref cursor 使用游标变量时不需要在定义时就指定相应的select语句,从而实现动态的游标操作。
Declare
 Type c1_refcursor is ref cursor;
 C1refcursor c1_refcursor;
 Begin
    Open c1refcursor for select…
 End;
Ref obj_type 譬如在处理家庭成员的过程中,由于同一个家庭的所有成员的家庭住址属性都相同,为了避免数据冗余,传统的处理方式是定义家庭住址表(ID varchar2(10),addr varchar2(100));这样可以有效降低冗余的数量,譬如使用ID代替addr,将冗余字节数从100降低到了10,但是这样依然存在冗余的数据。而采用参照变量ref进行处理则可以完全避免冗余,处理方式为首先定义地址对象home_type和存储地址的表homes,然后在定义人员时将地址字段定义为ref home_type就建立了一个指向对应地址的指针。
Create or replace type home_type as object(addr varchar2(1000),tel varchar2(20)); --定义地址对象
Create table homes of home_type; --定义家庭地址表
Insert into homes values(‘asdfasdf’,’15837033970’); --插入家庭地址数据
Create table person(id number, name varchar2(10), addr ref home_type); --定义人员表
Insert into person
Select 1,’maming’,ref(p) from homes p where p. tel = ‘15837033970’; --插入人员数据
 

你可能感兴趣的:(oracle,c,object,table,存储,insert)