我想从某个表里(字段比较多)生成一个ref cursor
但是不能用一个select 实现,
比如
    条件                  数值              条件             数值
-------------------------------------------------------------------
本年新增加               20000           某段时间调出
本年减少                 10000           某段时间调入
某段时间增加             3000            
某段时间减少             4000
-------------------------------------------------------------------
二虚线之间的值都是要单独计算出来放入cursor 里的
我该怎么做呢?我对ref cursor 不了解,并且不知道时候可以一个一个往里面添加数值。
拜托!

解决方案 »

  1.   

    2虚线之间值我可以用select 单独生成,但是如何放入ref cursor里呢?
      

  2.   

    open p_rc for 
    select .....??
      

  3.   

    我不明白呀。
    因为2虚线之间的每一个值都要放单独存到ref cursor里,而且那些值需要不同的select 才能生成
    因为这个生成后的表比较小,所以我想一个一个值加入到ref cursor 。但是我不知道该怎么加。
      

  4.   

    select xx from yy
    union all
    select xx from bb
    union all
    select xx from cc
    union all
    select xx from dd??这个意思吗?
      

  5.   

    上面的我要测试一下才知道还一个问题(我可真麻烦,是吗):
    表一:
              dw        bm       mc        sl     je        rq
    01 bm1 计算机    1     10000     2001-01-01
    01 bm1 空调    2     20000     2002-01-01
    01 bm1      计算机    2     20000     2003-01-01
    01       bm2      打印机      1     10000      2004-01-01
    01 bm2 计算机    1     10000     2002-01-01
    01 bm4 电视机    1 4000      2003-01-01根据输入的时间段 rq1,rq2生成如下表:rq1='2002-12-12',rq2='2003-12-12'
    ——————————————————————————————
     mc        起初余额            本期发生额       期末余额
    计算机     20000                20000            40000
    空调       20000                0                20000
    打印机     0                    0                 0
    电视机     0                    4000              4000
    ——————————————————————————————我知道也应该用decode  ,但是涉及到日期比较,我就不知道该怎么写了。
      

  6.   

    我知道了:你看看对不对   open my_cur FOR 
     select flmc,jldw, 
              sum(decode(sign(bdrq-to_date(v_rqs,'YYYY-MM-DD')),-1,sl,0)) qcsl,
              sum(decode(sign(bdrq-to_date(v_rqs,'YYYY-MM-DD')),-1,yz,0)) qcyz,
              sum(decode(sign(bdrq-to_date(v_rqz,'YYYY-MM-DD')),1,sl,0)) qmsl,
              sum(decode(sign(bdrq-to_date(v_rqz,'YYYY-MM-DD')),1,yz,0)) qmyz
         from gdzckp group by flmc,jldw;