Chinaunix首页 | 论坛 | 博客
  • 博客访问: 135327
  • 博文数量: 40
  • 博客积分: 673
  • 博客等级: 上士
  • 技术积分: 426
  • 用 户 组: 普通用户
  • 注册时间: 2011-09-21 14:08
文章分类

全部博文(40)

文章存档

2013年(4)

2012年(36)

我的朋友

分类: Oracle

2012-12-03 15:35:35

1.proc编译问题
UPDATE TFUNDDAY A
                SET (F_INCOME)=
                        NVL((SELECT NVL(A.F_INCOME,0)+NVL(B.f_DepositAgmIncome,0)+NVL(B.f_DepositRdmIncome,0)
                           FROM TFUNDDAY B
                          WHERE B.C_FUNDCODE=A.C_FUNDCODE
                            AND B.D_CDATE=TO_DATE(:GRequestDate,'YYYYMMDD')),F_INCOME)
              WHERE A.D_CDATE=TO_DATE(:GConfirmDate,'YYYYMMDD')
                AND EXISTS (SELECT 1 
                              FROM TQSSPECIALPRODUCT C
                             WHERE C.C_PRODUCTTYPE='0'
                               AND C.C_ISCLASSFLAG='1'
                               AND C.C_FUNDCODE=A.C_FUNDCODE);
 这条sql语句可以在plsql上面跑,但是proc编译通不过,编译出错原因是SET后面的第一个NVL这个地方有问题

2.外连接问题
 前提条件,行情表中10221022的行情不存在,20121025的行情未付收益F_INCOME为10000,其他(f_DepositRdmIncome和f_DepositRdmIncome)的都为空值
 
 UPDATE TFUNDDAY A
                SET (F_INCOME)=
                        (SELECT NVL(A.F_INCOME,0)+NVL(B.f_DepositAgmIncome,0)+NVL(B.f_DepositRdmIncome,0)
                           FROM TFUNDDAY B
                          WHERE B.C_FUNDCODE(+)=A.C_FUNDCODE
                            AND B.D_CDATE(+)=TO_DATE('20121022','YYYYMMDD'))
              WHERE A.D_CDATE=TO_DATE('20121025','YYYYMMDD')
                AND EXISTS (SELECT 1 
                              FROM TQSSPECIALPRODUCT C
                             WHERE C.C_PRODUCTTYPE='0'
                               AND C.C_ISCLASSFLAG='1'
                               AND C.C_FUNDCODE=A.C_FUNDCODE);                               
                               
运行完成后,查询20121025的行情未付收益为空

  SELECT NVL(A.F_INCOME,0)+NVL(B.f_DepositAgmIncome,0)+NVL(B.f_DepositRdmIncome,0)
    FROM TFUNDDAY B,TFUNDDAY A
   WHERE B.C_FUNDCODE(+)=A.C_FUNDCODE
     AND B.D_CDATE(+)=TO_DATE('20121022','YYYYMMDD')
     AND A.D_CDATE=TO_DATE('20121025','YYYYMMDD')
     AND EXISTS (SELECT 1 
                   FROM TQSSPECIALPRODUCT C
                  WHERE C.C_PRODUCTTYPE='0'
                    AND C.C_ISCLASSFLAG='1'
                    AND C.C_FUNDCODE=A.C_FUNDCODE);
查询结果为10000


查询语句是根据update语句写出来的,条件完全一样,为什么查询出来的结果跟更新的结果不一样
阅读(1365) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~