第一个对象
create or replace type GET_REQUEST_OBJ as object
(
        REQUEST_DIV             VARCHAR2(2),
        REQUEST_CD              VARCHAR2(13),
        REQUEST_DATE          DATE
)
create or replace type GET_REQUEST_TYPE is table of GET_REQUEST_OBJ;
第二个对象
type TYPE_GET_REQUEST IS record(
        REQUEST_DIV             VARCHAR2(2),
        REQUEST_CD              VARCHAR2(13),
        REQUEST_DATE          DATE
)
type REC_GET_REQUEST_DATA is table of type_get_request index by binary_integer;       两个对象的变量声明
GET_REQUEST_DATA_OBJ  GET_REQUEST_TYPE;     
G_REC_GET_REQUEST   REC_GET_REQUEST_DATA;现在是G_REC_GET_REQUEST变量里有3条记录,怎样才能把G_REC_GET_REQUEST的数据付给GET_REQUEST_DATA_OBJ变量呢?请各位帮帮忙。

解决方案 »

  1.   

    对象建在什么用户下?可以使用copy命令吧
      

  2.   

    是在存储过程里面的,不能用SQL*Plus的Copy命令
      

  3.   

    declare
    type TYPE_GET_REQUEST IS record(
            REQUEST_DIV             VARCHAR2(2),
            REQUEST_CD              VARCHAR2(13),
            REQUEST_DATE          DATE
    );
    type REC_GET_REQUEST_DATA is table of type_get_request index by binary_integer;    
      GET_REQUEST_DATA_OBJ  GET_REQUEST_TYPE:=GET_REQUEST_TYPE(); 
    G_REC_GET_REQUEST   REC_GET_REQUEST_DATA;
    type_req TYPE_GET_REQUEST;
    type_obj GET_REQUEST_OBJ;
    begin
     type_req.REQUEST_DIV:='a';
     type_req.REQUEST_CD:='a';
     type_req.REQUEST_DATE:=sysdate;
     G_REC_GET_REQUEST(0):=type_req;
     type_req.REQUEST_DIV:='b';
     type_req.REQUEST_CD:='a';
     type_req.REQUEST_DATE:=sysdate;
     G_REC_GET_REQUEST(1):=type_req;
     type_req.REQUEST_DIV:='c';
     type_req.REQUEST_CD:='a';
     type_req.REQUEST_DATE:=sysdate;
     G_REC_GET_REQUEST(2):=type_req;
     
     type_obj:=GET_REQUEST_OBJ(
     G_REC_GET_REQUEST(0).REQUEST_DIV,
     G_REC_GET_REQUEST(0).REQUEST_cd,
     G_REC_GET_REQUEST(0).REQUEST_DATE);
     
    GET_REQUEST_DATA_OBJ.extend();
     GET_REQUEST_DATA_OBJ(1):=type_obj;
     type_obj:=GET_REQUEST_OBJ(
     G_REC_GET_REQUEST(1).REQUEST_DIV,
     G_REC_GET_REQUEST(1).REQUEST_cd,
     G_REC_GET_REQUEST(1).REQUEST_DATE);
     
    GET_REQUEST_DATA_OBJ.extend();
     GET_REQUEST_DATA_OBJ(2):=type_obj;
     type_obj:=GET_REQUEST_OBJ(
     G_REC_GET_REQUEST(2).REQUEST_DIV,
     G_REC_GET_REQUEST(2).REQUEST_cd,
     G_REC_GET_REQUEST(2).REQUEST_DATE);
     
    GET_REQUEST_DATA_OBJ.extend();
     GET_REQUEST_DATA_OBJ(3):=type_obj;
     
     dbms_output.put_line(GET_REQUEST_DATA_OBJ(1).REQUEST_DIV);
       dbms_output.put_line(GET_REQUEST_DATA_OBJ(2).REQUEST_DIV);
       dbms_output.put_line(GET_REQUEST_DATA_OBJ(3).REQUEST_DIV);
    end;--结果
    a
    b
    c
      

  4.   

    太感谢icedut(冰) ,好用了。谢谢谢谢 :)