编译一过程时,出现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.   

    出现符号“SELECT”在需要下列之一时,不是select 有问题 ,是前面有问题
      

  2.   

    前面就是声明呀没看出有什么问题。
    CREATE OR REPLACE PROCEDURE SP_TJ_LCTJQK
    (
      PBRID00  IN  TJ_BRXXB0.BRID00%TYPE,
      PFLAG    IN  NUMBER,
      PTIME  IN  VARCHAR, 
      PLB0000 IN  NUMBER --1,2,3,4,5
    )
    AS
      

  3.   

    你把这个select换成简单的select,再看是不是这出问题的
      

  4.   

    ORDER BY KSBH00, ZLXMID, JCXMID
    这个问题
    先去掉
      

  5.   

     如果我把这两字删除就没有出现SELECT 的错误DECODE(B.JCXMMC,NULL,(SELECT XMMC00 FROM BM_JCXMDY WHERE JCXMID=B.JCXMID),B.JCXMMC) 
                   DECODE(B.XMDW00,NULL,(SELECT DW0000 FROM BM_JCXMDY WHERE JCXMID=B.JCXMID),B.XMDW00)                           
      

  6.   

    你把错误写全,里面有好几个select是那一行报的错?
      

  7.   

    DECODE(B.JCXMMC,NULL,(SELECT XMMC00 FROM BM_JCXMDY WHERE JCXMID=B.JCXMID),B.JCXMMC)  里的SELECT 出错