本人是个菜鸟,在PL里编译时碰到个PLS-00103错误,请大家帮忙找找,谢谢~~~~~~~~~~
代码如下:
create or replace procedure tlbb.TLBBStoreBuyLog
(
v_sn in tl_server_log.sn%type,
v_group_id in tl_server_log.group_id%type,
v_server_ip in tl_server_log.SERVER_IP%type,
v_server_name in tl_server_log.server_name%type,
v_word in tl_server_log.word%type,
v_server in tl_server_log.server%type,
v_scene in tl_server_log.SCENE%type,
v_cn_guid in tl_server_log.cn_guid%type,
v_buy_time in varchar2,
v_jewel_total in tl_server_log.jewel_total%type,
v_cn in tl_server_log.cn%type,
v_character_put in tl_server_log.character_put%type,
v_ip in tl_server_log.ip%type,
v_memo in tl_server_log.memo%type,
r_myReturn out number 
)
ascout number(2);
errCode1 EXCEPTION;
v_substr varchar2(256);
pos number(5);
i number(5):=0;beginselect count(cn) into cout from TL_SERVER_LOG where sn=v_sn;if cout =0 then
   v_substr := v_memo;
    --???????????,'?????    while i < 3 loop
    pos := instr( v_substr, ',');
    v_substr := substr( v_substr, pos+1);
    dbms_output.put_line(v_substr);
    i := i+1;    
    end loop;
    
    --?????d
    pos := instr( v_substr, ',');
    v_substr := substr( v_substr,1, pos -1);INSERT INTO TL_SERVER_LOG (ID,SN,GROUP_ID,SERVER_IP,SERVER_NAME,WORD,SERVER,SCENE,CN_GUID,BUY_TIME, 
            JEWEL_TOTAL,CN,CHARACTER_PUT,IP,MEMO,PUT_DATE,weaponid) 
            VALUES(SEQ_TL_SERVER_LOG_ID.NEXTVAL,v_sn,v_group_id,v_server_ip,v_server_name,v_word,v_server,
            v_scene,v_cn_guid,to_date(v_buy_time,'yyyy-mm-dd hh24:mi:ss'),v_jewel_total,v_cn,v_character_put,v_ip,v_memo,sysdate,v_substr);r_myReturn :=0;
commit;
else   r_myReturn := 2;
end if;
EXCEPTION
    when OTHERS then
        rollback;
        r_myReturn := 3;  --??????end;

解决方案 »

  1.   

    end loop   else   EXCEPTION 这三个报错
      

  2.   

    PLS-00103: %s 
    Cause: This error message is from the parser. It found a token (language element) that is inappropriate in this context.
    Action: Check previous tokens as well as the one given in the error message. The line and column numbers given in the error message refer to the end of the faulty language construct.
      

  3.   

    -- TRY THIS CODE:
    CREATE OR REPLACE PROCEDURE TLBB.TLBBSTOREBUYLOG(V_SN            IN TL_SERVER_LOG.SN%TYPE,
                                                     V_GROUP_ID      IN TL_SERVER_LOG.GROUP_ID%TYPE,
                                                     V_SERVER_IP     IN TL_SERVER_LOG.SERVER_IP%TYPE,
                                                     V_SERVER_NAME   IN TL_SERVER_LOG.SERVER_NAME%TYPE,
                                                     V_WORD          IN TL_SERVER_LOG.WORD%TYPE,
                                                     V_SERVER        IN TL_SERVER_LOG.SERVER%TYPE,
                                                     V_SCENE         IN TL_SERVER_LOG.SCENE%TYPE,
                                                     V_CN_GUID       IN TL_SERVER_LOG.CN_GUID%TYPE,
                                                     V_BUY_TIME      IN VARCHAR2,
                                                     V_JEWEL_TOTAL   IN TL_SERVER_LOG.JEWEL_TOTAL%TYPE,
                                                     V_CN            IN TL_SERVER_LOG.CN%TYPE,
                                                     V_CHARACTER_PUT IN TL_SERVER_LOG.CHARACTER_PUT%TYPE,
                                                     V_IP            IN TL_SERVER_LOG.IP%TYPE,
                                                     V_MEMO          IN TL_SERVER_LOG.MEMO%TYPE,
                                                     R_MYRETURN      OUT NUMBER) AS  COUT NUMBER(2);
      ERRCODE1 EXCEPTION;
      V_SUBSTR VARCHAR2(256);
      POS      NUMBER(5);
      I        NUMBER(5) := 0;BEGIN  SELECT COUNT(CN) INTO COUT FROM TL_SERVER_LOG WHERE SN = V_SN;  IF COUT = 0 THEN
        V_SUBSTR := V_MEMO;
        WHILE I < 3 LOOP
          POS      := INSTR(V_SUBSTR, ',');
          V_SUBSTR := SUBSTR(V_SUBSTR, POS + 1);
          DBMS_OUTPUT.PUT_LINE(V_SUBSTR);
          I := I + 1;
        END LOOP;
      
        POS      := INSTR(V_SUBSTR, ',');
        V_SUBSTR := SUBSTR(V_SUBSTR, 1, POS - 1);
      
        INSERT INTO TL_SERVER_LOG
          (ID,
           SN,
           GROUP_ID,
           SERVER_IP,
           SERVER_NAME,
           WORD,
           SERVER,
           SCENE,
           CN_GUID,
           BUY_TIME,
           JEWEL_TOTAL,
           CN,
           CHARACTER_PUT,
           IP,
           MEMO,
           PUT_DATE,
           WEAPONID)
        VALUES
          (SEQ_TL_SERVER_LOG_ID.NEXTVAL,
           V_SN,
           V_GROUP_ID,
           V_SERVER_IP,
           V_SERVER_NAME,
           V_WORD,
           V_SERVER,
           V_SCENE,
           V_CN_GUID,
           TO_DATE(V_BUY_TIME, 'YYYY-MM-DD HH24:MI:SS'),
           V_JEWEL_TOTAL,
           V_CN,
           V_CHARACTER_PUT,
           V_IP,
           V_MEMO,
           SYSDATE,
           V_SUBSTR);
      
        R_MYRETURN := 0;
        COMMIT;
      ELSE
      
        R_MYRETURN := 2;
      END IF;
    EXCEPTION
      WHEN OTHERS THEN
        ROLLBACK;
        R_MYRETURN := 3;
      
    END;