open   recur for SELECT DJBH,
             decode(DJLX,2,'进货',3,'退火',9, '手发挥') "DJLX",
             decode(DJLX,2,(select  ZXRQ from JHD where JLBH=A.DJBH),
             3,(select ZXRQ from THCL where JLBH=A.DJBH),
             9,(select ZXRQ from JJBJD where JLBH=A.DJBH)) "DJRQ",
            JSJE_BHS,(ZZSJE_17+ZZSJE_13+ZZSJE_QT) "ZZSJE",
           (JSJE_BHS+ZZSJE_17+ZZSJE_13+ZZSJE_QT) "JSJE_HS"
        FROM JXJSD_DJH A WHERE JLBH=27143 and DJLX<=9 and JSJE_BHS<>0;
存储过程中这句编译不过去,但是单独运行
SELECT DJBH,
             decode(DJLX,2,'进货',3,'退火',9, '手发挥') "DJLX",
             decode(DJLX,2,(select  ZXRQ from JHD where JLBH=A.DJBH),
             3,(select ZXRQ from THCL where JLBH=A.DJBH),
             9,(select ZXRQ from JJBJD where JLBH=A.DJBH)) "DJRQ",
            JSJE_BHS,(ZZSJE_17+ZZSJE_13+ZZSJE_QT) "ZZSJE",
           (JSJE_BHS+ZZSJE_17+ZZSJE_13+ZZSJE_QT) "JSJE_HS"
        FROM JXJSD_DJH A WHERE JLBH=27143 and DJLX<=9 and JSJE_BHS<>0
没有问题 。
   我把第二个docode里的sql语句用单引号扩起来就可以了。
就是改成这样:
open   recur for SELECT DJBH,
             decode(DJLX,2,'进货',3,'退火',9, '手发挥') "DJLX",
             decode(DJLX,2,‘(select  ZXRQ from JHD where JLBH=A.DJBH)’,
             3,‘(select ZXRQ from THCL where JLBH=A.DJBH)’,
             9,‘(select ZXRQ from JJBJD where JLBH=A.DJBH)’) "DJRQ",
            JSJE_BHS,(ZZSJE_17+ZZSJE_13+ZZSJE_QT) "ZZSJE",
           (JSJE_BHS+ZZSJE_17+ZZSJE_13+ZZSJE_QT) "JSJE_HS"
        FROM JXJSD_DJH A WHERE JLBH=27143 and DJLX<=9 and JSJE_BHS<>0;
这是为什么啊