create type obj as object
(
val1 varchar2(20),
val2 varchar2(20),
val3 char(1));
/就可以了,
使用的时候:
create table test(
 id number(10) not null,
 name obj
);
/

解决方案 »

  1.   

    --创建两个type
    SQL> create or replace type myobjectype as object (x int,y date,z varchar2(50));
      2  /
     
    Type created.
     
    SQL> create or replace type mytabletype as table of myobjectype
      2  /
     
    Type created.
     
    --创建可以返回纪录集的函数(不传入表名参数)
    SQL> create or replace function testrerecordnotabname (tableid in number)
      2  return mytabletype
      3  as
      4    l_data mytabletype :=mytabletype();
      5  begin
      6    for i in (select * from a where id>=tableid)  loop
      7      l_data.extend;
      8      l_data(l_data.count) := myobjectype(i.id,i.doctime,i.name);
      9      exit when i.id = 62;
     10    end loop;  
     11    return l_data;     
     12  end;   
     13  /
     
    Function created.
     
    SQL> commit;
     
    Commit complete.