我的代码有什么问题
sql> declare 2 mark number :=50; 3 begin 4 mark :=& mark; 5 if (mark between 85 and 100) 6 then 7 dbms_output.put_line('mark is A '); 8 else if (mark between 50 and 65) then 9 dbms_output.put_line('mark is D '); 10 else if (mark between 66 and 75) then 11 dbms_output.put_line('mark is C '); 12 else if (mark between 76 and 84) then 13 dbms_output.put_line('mark is B'); 14 else 15 dbms_output.put_line('mark is F'); 16 end if; 17 end; 18 / Enter value for mark: 65 old 4: mark :=& mark; new 4: mark :=65; end; *
ERROR at line 17:
ORA-06550: line 17,column 4:
PLS-00103: Encountered the symbol “;” when expecting one of the following:
if
问题是else和if是两个运算符.由于你打开一个新的’if’,你需要一个相应的’end if’.
从而:
declare mark number :=50; begin mark :=& mark; if (mark between 85 and 100) then dbms_output.put_line('mark is A '); else if (mark between 50 and 65) then dbms_output.put_line('mark is D '); else if (mark between 66 and 75) then dbms_output.put_line('mark is C '); else if (mark between 76 and 84) then dbms_output.put_line('mark is B'); else dbms_output.put_line('mark is F'); end if; end if; end if; end if; end; /
或者你可以使用elsif:
declare mark number :=50; begin mark :=& mark; if (mark between 85 and 100) then dbms_output.put_line('mark is A '); elsif (mark between 50 and 65) then dbms_output.put_line('mark is D '); elsif (mark between 66 and 75) then dbms_output.put_line('mark is C '); elsif (mark between 76 and 84) then dbms_output.put_line('mark is B'); else dbms_output.put_line('mark is F'); end if; end; /