第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
本文介绍了第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 oneEND 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屋!
查看全文