2013-12-13 42 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

相关问题