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;