PLS-00103:遇到符号“;”预期以下情况之一时:

     2023-03-28     222

关键词:

【中文标题】PLS-00103:遇到符号“;”预期以下情况之一时:【英文标题】:PLS-00103: Encountered the symbol ";" when expecting one of the following: 【发布时间】:2013-11-18 21:50:28 【问题描述】:

我的代码有什么问题

    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;
   *

第 17 行的错误: ORA-06550:第 17 行,第 4 列: PLS-00103:遇到符号“;”当期待以下之一时: 如果

【问题讨论】:

【参考方案1】:

问题在于 elseif 是这里的两个运算符。由于您打开一个新的“如果”,因此您需要一个相应的“结束如果”。

因此:

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;
/

【讨论】:

【参考方案2】:

IF 语句在PL/SQL 中有这些形式:

IF THEN

IF THEN ELSE

IF THEN ELSIF

您使用了elseif,这在PL/SQL 方面是错误的。这需要替换为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;
/

【讨论】:

PLS-00103:在预期以下情况之一时遇到符号“ON”

】PLS-00103:在预期以下情况之一时遇到符号“ON”【英文标题】:PLS-00103:Encounteredthesymbol"ON"whenexpectingoneofthefollowing【发布时间】:2020-07-0516:56:47【问题描述】:请注意:我尝试了其他堆栈溢出问题,但没有一个能解决我... 查看详情

PLS00103:在预期以下情况之一时遇到符号“I”

】PLS00103:在预期以下情况之一时遇到符号“I”【英文标题】:PLS00103:Encounteredthesymbol"I"whenexpectingoneofthefollowing【发布时间】:2017-08-1507:34:11【问题描述】:亲爱的,我想做一个功能来清理我的电话号码,我写了下面的函... 查看详情

PLS-00103:遇到符号“;”预期以下情况之一时:。 ( ) * @ % & - + /

】PLS-00103:遇到符号“;”预期以下情况之一时:。()*@%&-+/【英文标题】:PLS-00103:Encounteredthesymbol";"whenexpectingoneofthefollowing:.()*@%&-+/【发布时间】:2015-01-0414:45:03【问题描述】:编译失败,第10行(14:27:16)与编译错误相... 查看详情

PLS-00103:在预期以下情况之一时遇到符号“END”

】PLS-00103:在预期以下情况之一时遇到符号“END”【英文标题】:PLS-00103:Encounteredthesymbol"END"whenexpectingoneofthefollowing【发布时间】:2011-07-1810:58:37【问题描述】:我收到此错误:[sqlplus]Truncatingdimensiondw_DM_Application[sqlplus]END... 查看详情

错误:PLS-00103:在预期以下情况之一时遇到符号“END”

】错误:PLS-00103:在预期以下情况之一时遇到符号“END”【英文标题】:Error:PLS-00103:Encounteredthesymbol"END"whenexpectingoneofthefollowing【发布时间】:2013-03-2306:07:56【问题描述】:我写了以下包和包体:createorreplacepackagediscountsis... 查看详情

为啥我会收到此错误? PLS-00103:在预期以下情况之一时遇到符号“CREATE”:

】为啥我会收到此错误?PLS-00103:在预期以下情况之一时遇到符号“CREATE”:【英文标题】:WhyamIgettingthiserror?PLS-00103:Encounteredthesymbol"CREATE"whenexpectingoneofthefollowing:为什么我会收到此错误?PLS-00103:在预期以下情况之一时... 查看详情

PLS-00103:在预期以下情况之一时遇到符号“TEST_PKG”:;

】PLS-00103:在预期以下情况之一时遇到符号“TEST_PKG”:;【英文标题】:PLS-00103:Encounteredthesymbol"TEST_PKG"whenexpectingoneofthefollowing:;【发布时间】:2015-10-2516:11:32【问题描述】:我收到这个错误错误:检查编译器日志6/3PLS-00... 查看详情

错误:PLS-00103:在预期以下情况之一时遇到符号“AS”:返回

】错误:PLS-00103:在预期以下情况之一时遇到符号“AS”:返回【英文标题】:Error:PLS-00103:Encounteredthesymbol"AS"whenexpectingoneofthefollowing:return【发布时间】:2015-11-2313:52:59【问题描述】:我知道这是另一个“遇到符号...”的... 查看详情

Oracle SP:PLS-00103:在预期以下情况之一时遇到符号“`”:

】OracleSP:PLS-00103:在预期以下情况之一时遇到符号“`”:【英文标题】:OracleSP:PLS-00103:Encounteredthesymbol"`"whenexpectingoneofthefollowing:【发布时间】:2020-06-1610:50:29【问题描述】:EXECUTEIMMEDIATE\'UPDATEGDW_ARC_CDM.LND_DIM_GEOSETDESCRIPT... 查看详情

ORA-06550 第 10 行,第 41 列:PLS-00103:在预期以下情况之一时遇到符号“,”:

...ORA-06550第10行,第41列:PLS-00103:在预期以下情况之一时遇到符号“,”:【英文标题】:ORA-06550line10,column41:PLS-00103:Encounteredthesymbol","whenexpectingoneofthefollowing:【发布时间】:2015-05-0604:18:35【问题描述】:我正在从C#执行一... 查看详情

PLS-00103:预期时遇到符号“(”

】PLS-00103:预期时遇到符号“(”【英文标题】:PLS-00103:Encounteredthesymbol"("whenexpecting【发布时间】:2016-03-0305:45:18【问题描述】:以下过程有什么问题?我收到以下错误。行/列错误1/107PLS-00103:在期待其中之一时遇到符... 查看详情

Oracle PL-SQL 函数出现错误 PLS-00103:在预期以下情况之一时遇到符号“SELECT”

】OraclePL-SQL函数出现错误PLS-00103:在预期以下情况之一时遇到符号“SELECT”【英文标题】:OraclePL-SQLfunctiongettingerrorPLS-00103:Encounteredthesymbol"SELECT"whenexpectingoneofthefollowing【发布时间】:2020-09-1417:04:03【问题描述】:createorre... 查看详情

PLS-00103:在预期以下之一时遇到符号“文件结尾”

】PLS-00103:在预期以下之一时遇到符号“文件结尾”【英文标题】:PLS-00103:Encounteredthesymbol"end-of-file"whenexpectingoneofthefollowing【发布时间】:2016-10-1213:17:43【问题描述】:这条PL/SQL语句:FUNCTIONf_comparestring(ps_string1VARCHAR2,ps_... 查看详情

PLS-00103:在 oracle 函数中预期以下之一时遇到符号“IF”

】PLS-00103:在oracle函数中预期以下之一时遇到符号“IF”【英文标题】:PLS-00103:Encounteredthesymbol"IF"whenexpectingoneofthefollowinginoraclefunction【发布时间】:2015-09-3009:06:59【问题描述】:我正在编写以下函数,其中出现PLS-00103:Enc... 查看详情

“PLS-00103:在预期以下之一时遇到符号“END”::=。(%;符号“;”被替换为“END”以继续。“

】“PLS-00103:在预期以下之一时遇到符号“END”::=。(%;符号“;”被替换为“END”以继续。“【英文标题】:"PLS-00103:Encounteredthesymbol"END"whenexpectingoneofthefollowing::=.(%;Thesymbol";"wassubstitutedfor"END"tocont... 查看详情

错误(30,11):PLS-00103:遇到符号更新错误

】错误(30,11):PLS-00103:遇到符号更新错误【英文标题】:Error(30,11):PLS-00103:EncounteredthesymbolUPDATEerror【发布时间】:2017-04-1213:45:32【问题描述】:在SP下创建时,我收到错误错误(30,11):PLS-00103:在预期以下情况之一时遇到符... 查看详情

返回 PLS-00103 的过程:预期时遇到符号“EOF”

】返回PLS-00103的过程:预期时遇到符号“EOF”【英文标题】:ProcedurereturningPLS-00103:Encounteredthesymbol"EOF"whenexpecting【发布时间】:2015-11-2704:52:00【问题描述】:我是PL/SQL的新手,正在做一个家庭作业问题,我需要编写一个... 查看详情

执行脚本时遇到 PLS-00103 错误

】执行脚本时遇到PLS-00103错误【英文标题】:PLS-00103errorencounteredwhileexecutingascript【发布时间】:2017-10-2516:20:53【问题描述】:我在执行以下脚本时遇到了错误。我曾经一直运行相同的脚本,但从来没有遇到过问题。我希望我的... 查看详情