代码之家  ›  专栏  ›  技术社区  ›  crchin

除INTO或VALUES子句外,不能使用组项

  •  2
  • crchin  · 技术社区  · 13 年前

    这个sql看起来不错,但在编译过程中出错。。

    SELECT COUNT(*)
    INTO :W9-TOT-TRXN
    FROM IRC02
    WHERE SUBSTR(P9_IRC_PST_DT,1,6) = :Ws-DATE-YM
    AND F9_IRC_FI = :W9-FI-PARAM
    AND P9_IRC_PRIN_CRN = :F9-IR025-CRN
    AND F9_IRC_LOC_ACCT = :F9-IR025-LOC-ACCT
    

    错误消息如下:

    文件RCCO.cbl中第757行第60列出现错误

                        WHERE SUBSTR(P9_IRC_PST_DT,1,6) = :Ws-DATE-YM
    

    PCB--00204,除INTO或VALUES子句外,不能使用组项

    01 Ws-DATE-YMD.
    03 Ws-DATE-YM.
       05 W9-DATE-YY      PIC 9(04) VALUE ZEROES.
       05 W9-DATE-MM      PIC 9(02) VALUE ZEROES.
    03 W9-DATE-DD         PIC 9(02) VALUE ZEROES.
    

    知道吗?谢谢:)

    2 回复  |  直到 13 年前
        1
  •  2
  •   y.chraibi    13 年前

    您也可以使用REDEFINES来避免添加MOVE语句:

    03 Ws-DATE-YM.
       05 W9-DATE-YY      PIC 9(04) VALUE ZEROES.
       05 W9-DATE-MM      PIC 9(02) VALUE ZEROES.
    03 Wx-DT-YM PIC 9(6) REDEFINES Ws-DATE-YM.
    
        2
  •  1
  •   Alex Poole    13 年前

    Group items cannot be used as host variables in the where clause 正如错误所说。您需要单独参考基本项目,例如:

    SELECT COUNT(*)
    INTO :W9-TOT-TRXN
    FROM IRC02
    WHERE SUBSTR(P9_IRC_PST_DT,1,4) = :Ws-DATE-YM.W9-DATE-YY
    AND SUBSTR(P9_IRC_PST_DT,5,2) = :Ws-DATE-YM.W9-DATE-MM
    AND F9_IRC_FI = :W9-FI-PARAM
    AND P9_IRC_PRIN_CRN = :F9-IR025-CRN
    AND F9_IRC_LOC_ACCT = :F9-IR025-LOC-ACCT
    

    或者更具表演性:

    WHERE SUBSTR(P9_IRC_PST_DT,1,6) = :Ws-DATE-YM.W9-DATE-YY || :Ws-DATE-YM.W9-DATE-MM
    

    尽管我是从医生那里而不是从经验中得出的,所以这是完全未经测试的;也不确定是否需要包括家长 Ws-DATE-YMD 在这两个部分之前,或者它的一个层次会很高兴。