第35行的错误:ORA-06550:第35行,第4栏:PLS-00103:遇到符号“;”,期待以下之一时:if [英] ERROR at line 35: ORA-06550: line 35, column 4: PLS-00103: Encountered the symbol ";" when expecting one of the following: if

查看:104
本文介绍了第35行的错误:ORA-06550:第35行,第4栏:PLS-00103:遇到符号“;”,期待以下之一时:if的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

  1  DECLARE
  2  SNO NUMBER(10):=&ENO;
  3  SNAME VRACHAR2(10):='&ENAME';
  4  M1 NUMBER(6):=&M1;
  5  M2 NUMBER(6):=&M2;
  6  M3 NUMBER(6):=&M3;
  7  TOTAL NUMBER(6);
  8  AVRG NUMBER(6);
  9  RESULT VARCHAR2(6);
 10  GRADE CHAR;
 11  BEGIN
 12  IF M1>40 AND M2>40 AND M3>40 THEN
 13  RESULT:='PASS';
 14  IF AVRG>=75 THEN
 15  GRADE:='A';
 16  ELSIF AVRG>=60 THEN
 17  GRADE:='B';
 18  IF AVRG>=45 THEN
 19  GRADE:='C';
 20  ELSE
 21  GRADE:='D';
 22  END IF;
 23  ELSE
 24  RESULT:='FAIL';
 25  GRADE:='_';
 26  ENDIF;
 27  DBMS_OUTPUT.PUT_LINE

('________________________________________');
 28  DBMS_OUTPUT.PUT_LINE('SNO: ' || SNO);
 29  DBMS_OUTPUT.PUT_LINE('SNAME:' || SNAME);
 30  DBMS_OUTPUT.PUT_LINE('TOTAL:' || TOTAL);
 31  DBMS_OUTPUT.PUT_LINE('AVRG:' || AVRG);
 32  DBMS_OUTPUT.PUT_LINE('RESULT' || RESULT);
 33  DBMS_OUTPUT.PUT_LINE('GRADE' || GRADE);
 34  DBMS_OUTPUT.PUT_LINE

('________________________________________');
 35* END;
 36  /
Enter value for eno: 23
old   2: SNO NUMBER(10):=&ENO;
new   2: SNO NUMBER(10):=23;
Enter value for ename: TYU
old   3: SNAME VRACHAR2(10):='&ENAME';
new   3: SNAME VRACHAR2(10):='TYU';
Enter value for m1: 67
old   4: M1 NUMBER(6):=&M1;
new   4: M1 NUMBER(6):=67;
Enter value for m2: 77
old   5: M2 NUMBER(6):=&M2;
new   5: M2 NUMBER(6):=77;
Enter value for m3: 89
old   6: M3 NUMBER(6):=&M3;
new   6: M3 NUMBER(6):=89;
END;





以下pl / sql程序引发错误



即第35行的错误:

ORA-06550:第35行,第4栏:

PLS-00103:遇到符号;当

期待下列之一时:

如果





请帮帮我。

谢谢你



the following pl/sql programme raise the error

i.e " ERROR at line 35:
ORA-06550: line 35, column 4:
PLS-00103: Encountered the symbol ";" when
expecting one of the following:
if "


please help me.
thank u

推荐答案

好像你拼错了一个 END IF

在第26行你有

It seems that you have misspelled one END IF.
On line 26 you have
ENDIF;



应该是


while it should be

END IF;





作为旁注,最里面的IF看起来似乎不需要。因此,而不是:



As a side note the innermost IF looks like it's not needed. So instead of having:

DECLARE
   SNO NUMBER(10):=&ENO;
   SNAME VRACHAR2(10):='&ENAME';
   M1 NUMBER(6):=&M1;
   M2 NUMBER(6):=&M2;
   M3 NUMBER(6):=&M3;
   TOTAL NUMBER(6);
   AVRG NUMBER(6);
   RESULT VARCHAR2(6);
   GRADE CHAR;
BEGIN
   IF M1>40 AND M2>40 AND M3>40 THEN
      RESULT:='PASS';
      IF AVRG>=75 THEN
         GRADE:='A';
      ELSIF AVRG>=60 THEN
         GRADE:='B';
         IF AVRG>=45 THEN
            GRADE:='C';
         ELSE
            GRADE:='D';
         END IF;
      ELSE
         RESULT:='FAIL';
      GRADE:='_';
   END IF;
   DBMS_OUTPUT.PUT_LINE('________________________________________');
   DBMS_OUTPUT.PUT_LINE('SNO: ' || SNO);
   DBMS_OUTPUT.PUT_LINE('SNAME:' || SNAME);
   DBMS_OUTPUT.PUT_LINE('TOTAL:' || TOTAL);
   DBMS_OUTPUT.PUT_LINE('AVRG:' || AVRG);
   DBMS_OUTPUT.PUT_LINE('RESULT' || RESULT);
   DBMS_OUTPUT.PUT_LINE('GRADE' || GRADE);
   DBMS_OUTPUT.PUT_LINE('________________________________________');
END;
/



为什么不将它简化为


Why not simplify it to

DECLARE
   SNO NUMBER(10):=&ENO;
   SNAME VRACHAR2(10):='&ENAME';
   M1 NUMBER(6):=&M1;
   M2 NUMBER(6):=&M2;
   M3 NUMBER(6):=&M3;
   TOTAL NUMBER(6);
   AVRG NUMBER(6);
   RESULT VARCHAR2(6);
   GRADE CHAR;
BEGIN
   IF M1>40 AND M2>40 AND M3>40 THEN
      RESULT:='PASS';
      IF AVRG>=75 THEN
         GRADE:='A';
      ELSIF AVRG>=60 THEN
         GRADE:='B';
      ELSIF AVRG>=45 THEN
         GRADE:='C';
      ELSIF ADD_THE_CORRECT_LIMIT_HERE
         GRADE:='D';
      ELSE
         RESULT:='FAIL';
      GRADE:='_';
   END IF;
   DBMS_OUTPUT.PUT_LINE('________________________________________');
   DBMS_OUTPUT.PUT_LINE('SNO: ' || SNO);
   DBMS_OUTPUT.PUT_LINE('SNAME:' || SNAME);
   DBMS_OUTPUT.PUT_LINE('TOTAL:' || TOTAL);
   DBMS_OUTPUT.PUT_LINE('AVRG:' || AVRG);
   DBMS_OUTPUT.PUT_LINE('RESULT' || RESULT);
   DBMS_OUTPUT.PUT_LINE('GRADE' || GRADE);
   DBMS_OUTPUT.PUT_LINE('________________________________________');
END;
/


这篇关于第35行的错误:ORA-06550:第35行,第4栏:PLS-00103:遇到符号“;”,期待以下之一时:if的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆