执行一条sql,where条件带in(不知道是不是跟这个有关),假如in(a,b,c)
在pl/sql下面执行有3条结果,在sql*plus worksheet下面执行只有2条,是怎么回事啊?

解决方案 »

  1.   

    是不是在pl/sql中新插入了一条记录,但忘记commit了?
    oracle默认情况下要求显式commit的。
      

  2.   

    只是select语句,不过用到了group by!
    就像这种:select unit,sum(entry) from a where unit in(a,b,c) group by unit!
      

  3.   

    又试了下,会不会跟sql*plus设置有关啊?
      

  4.   

    怀疑是不是select后面字段太多或者太长的原因还是怎么的?
    select unit,sum(entry001+entry028),sum(entry002+entry029),sum(entry004+entry031),decode(sum(entry001+entry028),0,'',to_char(sum(entry002+entry029)/sum(entry001+entry028)*100,'9990.00')),sum(entry014+entry041),sum(entry015+entry042),sum(entry017+entry044),decode(sum(entry014+entry041),0,'',to_char(sum(entry015+entry042)/sum(entry014+entry041)*100,'9990.00')),sum(entry049+entry063),sum(entry050+entry064),sum(entry052+entry066),decode(sum(entry049+entry063),0,'',to_char(sum(entry050+entry064)/sum(entry049+entry063)*100,'9990.00')),sum(entry014+entry049+entry063+entry077),sum(entry015+entry027+entry050+entry062+entry064+entry076+entry078+entry090),sum(entry014+entry049+entry063+entry077)-sum(entry015+entry027+entry050+entry062+entry064+entry076+entry078+entry090),decode(sum(entry014+entry049+entry063+entry077),0,'',to_char(sum(entry015+entry027+entry050+entry062+entry064+entry076+entry078+entry090)/sum(entry014+entry049+entry063+entry077)*100,'9990.00')) from test where unit in ('a','b','c') group by unit;这样在sql*plus里面就只有2行,pl/sql里面有3行,把最后那个decode去掉或者换成别的字段,象sum(entry014+entry049+entry063+entry077)这种两个环境又都是3条了!疑惑中!