您的位置:首页 > 移动开发 > Objective-C

怎么使用object与record类型返回表类型数据

2007-03-15 21:05 609 查看
怎么使用object与record类型返回表类型数据

通过函数返回一个表类型的数据
先创建一个object的类型
 

代码:

create or replace type varproperty IS object(
pid number,
vid number
);
/
.


然后创建一个表类型对应到这个object

代码:

CREATE OR REPLACE TYPE auc_property AS TABLE OF varproperty;
/
.


创建一个函数返回这个表类型

代码:

create or replace function GET_PROPERTY(p_string in varchar2 )
  return auc_property
as
v_str long default p_string || ';';
v_pid varchar2(100);
v_vid varchar2(100);
v_n number;
v_m number;
TYPE auc_property AS TABLE OF varproperty;
v_data auc_property := auc_property();
begin
  loop
    v_n := instr( v_str, ';' );
    v_m := instr( v_str, ':' );
    exit when (nvl(v_n,0) = 0);
    v_pid := ltrim(rtrim(substr(v_str,1,v_m-1)));
    v_vid := ltrim(rtrim(substr(v_str,v_m+1,v_n-v_m-1)));
    v_data.extend;
    v_data(v_data.count) := varproperty(v_pid,v_vid);
      v_str := substr(v_str, v_n+1);
   end loop;
   return v_data;
end;
/
.


通过游标返回一个表类型的数据

代码:

create or replace procedure update_property is
--variale
   m_aid varchar2(32);
--type  
   type v_array is record (
    aid varchar2(32),
    astatus number,
    aproperty varchar2(4000)
    );
   type t_aucid is table of v_array;
   v_aucid t_aucid := t_aucid();
--cursor
cursor cur_pro is select id,APPROVE_STATUS,PROPERTY
   from auction_property_temp
    where PROPERTY is not null;
--start
begin
   open cur_pro;
    loop
      fetch cur_pro bulk collect into v_aucid limit 1000;
      for i in 1..v_aucid.count loop
        m_aid := v_aucid(i).aid;
        --delete from auction_property
        delete from auction_property where auction_id = m_aid;
        --insert into new recode
        insert into auction_property(auction_id,property_id,prop_vid,status)
          select m_aid,t.*,decode(v_aucid(i).astatus,-1,-1,0) status
            from table(get_property(v_aucid(i).aproperty)) t;
      end loop;
      commit;
   exit when cur_pro%notfound;
   end loop;
   commit;
   close cur_pro;
end update_property;
.


注,以上只是实际的例子,具体的使用还要视情况而定
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐