我用的动态游标
type refcur is ref cursor;
rc refcur; v_sql:= 'select a.INBOUNDBILLID,a.INBOUNDBILLNO,a.SITEID,a.IOID,a.ORGTYPECODE,'
        ||'a.DIVISIONID ,a.AREAID ,a.COMPANYID ,a.DEPARTID ,a.PROJID ,a.VENDORID ,'
        ||'a.CUSTID ,a.RESERVEDID ,a.STOCKEVENTCODE,a.INOUTFLAG ,a.ORDERIDREF,'
        ||'a.NOTICEIDREF,b.ITEMINDEX ,b.PRODID ,b.PRODCODE ,b.PRODNAME ,b.PRODSPEC ,'
        ||'b.PRODSTYLE ,b.PRODUNIT,b.COST ,b.STOCKSTATUSCODE ,b.LOCID ,b.BATNO ,'
        ||'b.SN ,b.QTY ,b.NETAMOUNT ,b.DELETEFLAG '
        ||'from InboundBill a,InboundBillDetail  b '
        ||'where a.INBOUNDBILLID in Pi_sBillID '
        ||'and a.INBOUNDBILLID = B.INBOUNDBILLID';
由于这个游标是两个表组成的复杂查询,因此我在fetch的时候
 fetch rc into uRow;
这个uRow怎么定义呢?
uRow InboundBill%rowtype;这样肯定不对,有没有办法能不让我在fetch的时候要把这么多的字段一一列入到n多的变量中去?

解决方案 »

  1.   

    由于这个游标是两个表组成的复杂查询,因此我在fetch的时候
     fetch rc into uRow;
    这个uRow怎么定义呢?
    uRow InboundBill%rowtype;这样肯定不对,有没有办法能不让我在fetch的时候要把这么多的字段一一列入到n多的变量中去?
    =====>可以建包含多表视图v_1,然后:
    urow v_1%rowtype;
    fetch rc into urow;
      

  2.   

    还有个方法,就是用  TYPE ... IS RECORD 自己定义一个类型。 例子:
    (
        col_a       a.a%TYPE   :=  '',
        col_b      b.b%TYPE   :=  '0', 
        col_c      a.c%TYPE  :=  '',
        col_d     b.e%TYPE   :=  '0',
      );