当前位置: 代码迷 >> Oracle管理 >> 创建的函数带有编译异常,
  详细解决方案

创建的函数带有编译异常,

热度:83   发布时间:2016-04-24 05:43:16.0
创建的函数带有编译错误,急~~~
CREATE OR REPLACE FUNCTION numpass
  (level char)
  return number
  as
num_pass number
begin
  if level="优" then
  select count(*) into num_pass from grade where grade>='90';
  elseif level="良" then
  select count(*) into num_pass from grade where grade>='75";
  elseif level="及格" then
  select count(*) into num_pass from grade where grade>='60";
  elseif level="不及格" then
  select count(*) into num_pass from grade where grade<'60';
  end if;
  return num_pass;
  end;

警告: 创建的函数带有编译错误。


用show error后提示

SQL> show error
FUNCTION NUMPASS 出现错误:

LINE/COL ERROR
-------- -----------------------------
6/1 PLS-00103: 出现符号 "BEGIN"在需要下列之一时:
  := . ( @ % ; not null
  range default character

有谁能帮忙下嘛谢谢

------解决方案--------------------
有很多的基本语法错误,如elseif就为ELSEIF,再有数字不用加单引号。
具体代码请参考:
SQL code
CREATE OR REPLACE FUNCTION numpass(level CHAR)RETURN NUMBERAS    num_pass NUMBER;BEGIN    IF level="优" THEN        SELECT COUNT(*) INTO num_pass FROM grade WHERE grade>= 90;    ELSIF level="良" THEN        SELECT COUNT(*) INTO num_pass FROM grade WHERE grade>= 75;    ELSIF level="及格" THEN        SELECT COUNT(*) INTO num_pass FROM grade WHERE grade>= 60;    ELSIF level="不及格" THEN        SELECT COUNT(*) INTO num_pass FROM grade WHERE grade < 60;    END IF;    RETURN num_pass;END;
  相关解决方案