2013-12-13 111 views
2

看起來沒問題,但得到異常請糾正我。PLS-00103:遇到以下符號之一時出現符號:

declare 
    var_number number; 

begin 
    var_number := 10; 

    if var_number > 100 then 
     dbms_output.put_line(var_number||' is greater than 100'); 
    elseif var_number < 100 then 
     dbms_output.put_line(var_number||' is less than 100'); 
    else 
     dbms_output.put_line(var_number||' is equal to 100'); 
    end if; 

end; 

例外:

ORA-06550: line 8, column 8: 
PLS-00103: Encountered the symbol "VAR_NUMBER" when expecting one of the following: 
    := . (@ % ; 
ORA-06550: line 13, column 4: 
PLS-00103: Encountered the symbol ";" when expecting one of the following: 
    if 

回答

11

爲Oracle PL/SQL的關鍵詞是 「ELSIF」(沒有額外的 「E」),而不是ELSEIF(是的,混亂的和愚蠢的)

declare 
    var_number number; 
begin 
    var_number := 10; 
    if var_number > 100 then 
     dbms_output.put_line(var_number||' is greater than 100'); 
    elsif var_number < 100 then 
     dbms_output.put_line(var_number||' is less than 100'); 
    else 
     dbms_output.put_line(var_number||' is equal to 100'); 
    end if; 
end; 
+0

謝謝你真的很有幫助。 – sunleo

-2
begin 
    var_number := 10; 

    if var_number > 100 then 
     dbms_output.put_line(var_number||' is greater than 100'); 
    else if var_number < 100 then 
     dbms_output.put_line(var_number||' is less than 100'); 
    else 
     dbms_output.put_line(var_number||' is equal to 100'); 
    end if; 
end if; 
0

IF聲明具有以下形式PL/SQL

IF THEN 
IF THEN ELSE 
IF THEN ELSIF 

您已使用根據PL/SQL錯誤的elseif。這需要用ELSIF來代替。

所以你的代碼應該像這樣出現。

declare 
     var_number number; 
    begin 
     var_number := 10; 
     if var_number > 100 then 
      dbms_output.put_line(var_number ||' is greater than 100'); 
--elseif should be replaced with elsif 
     elsif var_number < 100 then 
      dbms_output.put_line(var_number ||' is less than 100'); 
     else 
      dbms_output.put_line(var_number ||' is equal to 100'); 
     end if; 
    end; 
+0

感謝@dulith的回答 – sunleo

相關問題