DECLARE 
--***********************************
V_USERID USERSTEST.USERID %TYPE;
V_PWD USERSTEST.PWD %TYPE ;
V_NAME USERSTEST.NAME %TYPE ;
V_AGE USERSTEST.AGE %TYPE ;
V_SEX USERSTEST.SEX %TYPE ;
V_ADDRESS USERSTEST.ADDRESS %TYPE;
V_TEL USERSTEST.TEL %TYPE;
V_TAG CONSTANT NUMBER  := 1;
V_TABLECCOUNT NUMBER ;
V_CHANGECOUNT NUMBER ;
--***************
REPEAT_EXCEPTION EXCEPTION;
--***********************************BEGIN
     V_USERID := '2005112108';
     V_PWD := '9527007';
     V_NAME := '曼曼';
     V_AGE := '22' ;
     V_SEX := '2' ;
     V_ADDRESS := '不告诉你' ;
     V_TEL   := '00000' ;
     
     SELECT COUNT(*) INTO V_TABLECCOUNT FROM USERSTEST ;
     
     INSERT INTO USERSTEST VALUES(V_USERID,V_PWD,V_NAME,V_AGE,V_SEX,V_ADDRESS,V_TEL);
     
     SELECT COUNT(*) INTO V_CHANGECOUNT FROM USERSTEST ;
     
     IF V_CHANGECOUNT > V_CHANGECOUNT THEN
     
        DBMS_OUTPUT.put_line('执行成功');
     
     ELSE IF V_CHANGECOUNT < V_CHANGECOUNT THEN
     
     RAISE REPEAT_EXCEPTION ;     
     END IF ;
     EXCEPTION 
               WHEN NO_DATA_FOUND THEN
                    DBMS_OUTPUT.put_line('不能将重复的值添加到Userstest表中');     
END ;

解决方案 »

  1.   

    ORA-06550: line 40, column 6:
    PLS-00103: Encountered the symbol "EXCEPTION" when expecting one of the following:   begin case declare else elsif end exit for goto if loop mod
       null pragma raise return select update while with
       <an identifier> <a double-quoted delimited-identifier>
       <a bind variable> << close current delete fetch lock insert
       open rollback savepoint set sql execute commit forall merge
       <a single-quoted SQL string> pipe
    ORA-06550: line 50, column 0:
    PLS-00103: Encountered the symbol "end-of-file" when expecting one of the following:   end not pragma final instantiable order overriding static 这个是错误原因
      

  2.   

    明显错了,
    在例外中加入以下代码:
    when REPEAT_EXCEPTION then
    dbms_output.put_line('@#%%%');
      

  3.   

    EXCEPTION 
                when REPEAT_EXCEPTION then
                        DBMS_OUTPUT.put_line('不能将重复的值添加到Userstest表中');     
      

  4.   

    --TRYDECLARE 
    --***********************************
    V_USERID USERSTEST.USERID %TYPE;
    V_PWD USERSTEST.PWD %TYPE ;
    V_NAME USERSTEST.NAME %TYPE ;
    V_AGE USERSTEST.AGE %TYPE ;
    V_SEX USERSTEST.SEX %TYPE ;
    V_ADDRESS USERSTEST.ADDRESS %TYPE;
    V_TEL USERSTEST.TEL %TYPE;
    V_TAG CONSTANT NUMBER  := 1;
    V_TABLECCOUNT NUMBER ;
    V_CHANGECOUNT NUMBER ;
    --***************
    REPEAT_EXCEPTION EXCEPTION;
    --***********************************BEGIN
         V_USERID := '2005112108';
         V_PWD := '9527007';
         V_NAME := '曼曼';
         V_AGE := '22' ;
         V_SEX := '2' ;
         V_ADDRESS := '不告诉你' ;
         V_TEL   := '00000' ;
         
         SELECT COUNT(*) INTO V_TABLECCOUNT FROM USERSTEST ;
         
         INSERT INTO USERSTEST VALUES(V_USERID,V_PWD,V_NAME,V_AGE,V_SEX,V_ADDRESS,V_TEL);
         
         SELECT COUNT(*) INTO V_CHANGECOUNT FROM USERSTEST ;
         IF V_CHANGECOUNT > V_TABLECCOUNT  THEN
         
            DBMS_OUTPUT.put_line('执行成功');
         
         ELSE IF V_CHANGECOUNT < V_TABLECCOUNT  THEN
         
         RAISE REPEAT_EXCEPTION ;     
         END IF ;
         EXCEPTION 
                   WHEN REPEAT_EXCEPTION THEN
                        DBMS_OUTPUT.put_line('不能将重复的值添加到Userstest表中');     END ;