FUNCTION WH_F_INV_GetConvertCarStockID(
    StartDate DATE,
    EndDate   DATE,
    CustomID VARCHAR2 := NULL) 
RETURN  
  GetConvertCarStockID_REC_LIST PIPELINED    --定义的管道表
AS    
  AAA VARCHAR2(100);    
  CUR MYCUR;
  REC GetConvertCarStockID_REC;                    
BEGIN 
  OPEN CUR FOR 
         SELECT B0117, 0                         
            FROM B01
         INNER JOIN B02
            ON B0201 = B0101
              WHERE B0204 >= StartDate           
               AND B0204 <= EndDate
               AND NVL(B0210, 0) <> 2         
               AND NVL(B0211, 0) = 2          
               AND  (B0219 = CustomID         
             OR  CustomID IS NULL)  ;
   
  LOOP
    FETCH CUR INTO REC ;
    EXIT WHEN CUR%NOTFOUND ;
    PIPE ROW(REC);
  END LOOP; 
     
  --前面把记录已经装入申明的REC管道表中,但是后面我需要对记录做进一步处理,如删除,添加等...怎么办?  我函数是写在包中的,
    我又不想先创建表结构后来操作数据,只想在包中来完成,因为程序多处调用此函数,我不能把他转为过程来处理,比较麻烦,而在函数中又不支持动态建表.
    该怎么办呢?
   @RetVal相当于上面我申明的管道表....
   下面是MSSQL还未转为ORACLE的代码,应该怎么转,并且不脱离我定义的包,在包中就能完成的....?????
   DELETE 
      FROM @RetVal
   WHERE  StockID IS NULL
          OR   StockID IN (SELECT StockID 
                                         FROM  dbo.WH_FUNC_INV_GetConvertToCarStockID(@StartDate, @EndDate, @CustomID))    
     
     INSERT INTO @RetVal(StockID, Flag)
          SELECT StockID, 1
             FROM @RetVal
     GROUP BY StockID
    
     DELETE  FROM @RetVal  WHERE Flag = 0   RETURN ;
  EXCEPTION
    WHEN OTHERS THEN
      RAISE;
END;