解决方案 »

  1.   

    同样的SQL针对同样的表取出来的数据条数应该是一样的,不一样的原因可能是因为该表数据在变化,还有可能是你没有proc读取数据有问题导致你认为只有一条记录。
      

  2.   

    程序里面也是直接调用的这个sql,完全一致,数据肯定没有变化,数据库也没连错。我真的是郁闷了。
      

  3.   

    那很有可能是你在PROC中获取数据的时候有问题
      

  4.   

    把你整体proc检查下,是不是哪里限制。
      

  5.   

    怀疑是sql与程序冲突问题。我把sql嵌入c++程序里去后一条数据都跑不出来。
      

  6.   

    终于解决了,感谢大家,程序没有问题。因为数据比较乱,发现很大一部分busi_key的字段是不全的,所以其对应decode出来的info_val为null。对info_val做了如下处理后解决问题,但为什么会在程序和pl/sql中会出现两种结果我还是没搞懂。还得多学习学习。
    select a.BUSI_KEY||'|'||
           max(decode(info_id, 'A_TERM_MODEL' , nvl(info_val,'0'),'0'))       ||'|'||
    max(decode(info_id, 'A_TERM_OFFER' , nvl(info_val,'0'),'0'))        ||'|'||
    max(decode(info_id, 'A_TERM_TYPE' , nvl(info_val,'0'),'0'))         ||'|'||
    max(decode(info_id, 'A_TRAN_HOUSE' , nvl(info_val,'0'),'0'))        ||'|'||
    max(decode(info_id, 'BILL_CYCLE' , nvl(info_val,'0'),'0'))          ||'|'||
    max(decode(info_id, 'BILL_NUM' , nvl(info_val,'0'),'0'))           ||'|'||
    max(decode(info_id, 'END_ADDR' , nvl(info_val,'0'),'0'))            ||'|'||
    max(decode(info_id, 'LINE_END' , nvl(info_val,'0'),'0'))            ||'|'||
    max(decode(info_id, 'LINE_SCOPE' , nvl(info_val,'0'),'0'))          ||'|'||
    max(decode(info_id, 'LINE_START' , nvl(info_val,'0'),'0'))          ||'|'||
    max(decode(info_id, 'SEVER_BEGIN_DATE' , nvl(info_val,'0'),'0'))    ||'|'||
    max(decode(info_id, 'SEVER_END_DATE' , nvl(info_val,'0'),'0'))      ||'|'||
    max(decode(info_id, 'SPECIAL_LINE_TYPE' , nvl(info_val,'0'),'0'))   ||'|'||
    max(decode(info_id, 'SPEED_TYPE' , nvl(info_val,'0'),'0'))          ||'|'||
    max(decode(info_id, 'START_ADDR' , nvl(info_val,'0'),'0'))        ||'|'||
    max(decode(info_id, 'USE_PROPERTY' , nvl(info_val,'0'),'0'))       ||'|'||
    max(decode(info_id, 'USE_PURPOSE' , nvl(info_val,'0'),'0'))         
      from crm01_app.ucs_subs_other_info a where a.INFO_GRP_ID = 'gw_9310'   group by a.BUSI_KEY;