编译一过程时,出现PLS-00103错误:出现符号“SELECT”在需要下列之一时。过程里的SELECT语句是这样:CURSOR CUR_TJ_LCTJQK IS
    SELECT KSBH00,KSMC00,ZLXMID,ZLXMJC,
    JCXMID,JCXMMC,XMDW00,CDZ000,BGRQ00,CKZ000
      FROM 
      (
        SELECT A.BRID00,B.KSBH00,D.MC0000 KSMC00,B.ZLXMID,C.ZLXMJC,B.JCXMID,B.CDZ000,A.BGRQ00,B.CKZ000,
               DECODE(B.JCXMMC,NULL,(SELECT XMMC00 FROM BM_JCXMDY WHERE JCXMID=B.JCXMID),B.JCXMMC) JCXMMC,
               DECODE(B.XMDW00,NULL,(SELECT DW0000 FROM BM_JCXMDY WHERE JCXMID=B.JCXMID),B.XMDW00) XMDW00                         
            FROM TJ_BRXXB0 A,TJ_TJBG00 B,BM_ZLZD00 C,TJ_KSLB00 D
            WHERE A.GHID00=B.GHID00 AND B.ZLXMID=C.ZLXMID AND C.LBBH00=4
            AND A.SFTJ00='Y'  AND B.KSBH00=D.KSBH00   
            AND A.BRID00=PBRID00 AND A.BGRQ00=PTIME
            ORDER BY KSBH00,ZLXMID,JCXMID
        );
如果单独查询没问题,可放在过程里就出错。不明白什么原因?我用的是ORACLE8I这有关系吗?

解决方案 »

  1.   

    把group by移到最外面吧!
    试试:
    SELECT KSBH00,
           KSMC00,
           ZLXMID,
           ZLXMJC,
           JCXMID,
           JCXMMC,
           XMDW00,
           CDZ000,
           BGRQ00,
           CKZ000
    FROM   (SELECT A.BRID00,
                   B.KSBH00,
                   D.MC0000 KSMC00,
                   B.ZLXMID,
                   C.ZLXMJC,
                   B.JCXMID,
                   B.CDZ000,
                   A.BGRQ00,
                   B.CKZ000,
                   DECODE(B.JCXMMC,
                          NULL,
                          (SELECT XMMC00 FROM BM_JCXMDY WHERE JCXMID = B.JCXMID),
                          B.JCXMMC) JCXMMC,
                   DECODE(B.XMDW00,
                          NULL,
                          (SELECT DW0000 FROM BM_JCXMDY WHERE JCXMID = B.JCXMID),
                          B.XMDW00) XMDW00
            FROM   TJ_BRXXB0 A,
                   TJ_TJBG00 B,
                   BM_ZLZD00 C,
                   TJ_KSLB00 D
            WHERE  A.GHID00 = B.GHID00
            AND    B.ZLXMID = C.ZLXMID
            AND    C.LBBH00 = 4
            AND    A.SFTJ00 = 'Y'
            AND    B.KSBH00 = D.KSBH00
            AND    A.BRID00 = PBRID00
            AND    A.BGRQ00 = PTIME)
    ORDER  BY KSBH00,
              ZLXMID,
              JCXMID;
      

  2.   

    过程中不能这样用的,查询的字段要into到变量中的
      

  3.   

     SELECT语句用于从数据库中查询数据,当在PL/SQL中使用SELECT语句时,要与INTO子句一起使用,查询的返回值被赋予INTO子句中的变量
      

  4.   

    楼上的,这是CURSOR 
    你把CURSOR 放哪了,要放到begin前,is后