PLS--00103 pl/sql 中的错误

Posted

技术标签:

【中文标题】PLS--00103 pl/sql 中的错误【英文标题】:PLS--00103 error in pl/sql 【发布时间】:2013-05-13 13:18:55 【问题描述】:

我正在编写一个简单的老年人检查程序。但这个错误让我感到困惑。代码如下

declare
  gen char(1);
    age number(3);

begin
  gen:='&gen';
    age:=&age;

  if age>65 and gen='m'
    then
      dbms_output.put_line("senior citizen");

  elsif age>60 and gen='f'
    then
      dbms_output.put_line("senior citizen");

  else
      dbms_output.put_line(" not a senior citizen");
  endif;
end;

error at line 20:
ora 06550:line 20, column 4
pls-00103:encountered symbol ';' when expecting one of the following if

我真的不知道怎么了

【问题讨论】:

【参考方案1】:
declare
  gen char(1);
    age number(3);

begin
  gen:='&gen';
    age:=&age;

  if age>65 and gen='m'
    then
      dbms_output.put_line('senior citizen');

  elsif age>60 and gen='f'
    then
      dbms_output.put_line('senior citizen');

  else
      dbms_output.put_line(' not a senior citizen');
  end if;
end;

使用dbms_output.put_line时,您必须使用'代替"来显示字符串消息 还有一个endif,必须替换为end if 希望对朋友有所帮助。

【讨论】:

你很好,acceptance will be blessed【参考方案2】:

应该是“end if;”,而不是“endif;”。

(是的,这与“elsif”有些不一致。有趣的老东西,语法... :-)

分享和享受。

【讨论】:

【参考方案3】:
declare
    gen char(1)   := lower(:Gender)   ;
    age number(3) := :Age;
begin

  if ( 
    (age>65 and gen = 'm') OR (age>60 and gen ='f')
  )then
    dbms_output.put_line('senior citizen');
  else
    dbms_output.put_line(' not a senior citizen');
end if;
end;

【讨论】:

如果您确切地告诉您在代码中进行了哪些更改以使其正常工作,这将很有帮助。对于功能访问者来说,他们必须将原始代码与您的代码进行比较以猜测他们应该如何处理他们的代码来解决类似问题。

以上是关于PLS--00103 pl/sql 中的错误的主要内容,如果未能解决你的问题,请参考以下文章

令人沮丧的 PL/SQL 错误...PLS-00103

PL/SQL 函数错误 - PLS-00103:遇到符号“IS”

琐碎的 PL/SQL 块生成令人沮丧的 PLS-00103 错误

Oracle PL/SQL 错误 PLS-00103

在 PL/SQL 中编译包时出错。错误(7,1):PLS-00103:遇到符号“CREATE”

Pl SQL Oracle PLS-00103:遇到符号“CREATE”