让我们在您的代码中逐行查看问题:
set serveroutput on;
它没有造成任何伤害,但我没有看到它在上下文中有何帮助或需要 .
p_book_type TITLES.CATEGORY 错误,因为您需要使用 %TYPE attribute 指定它是 constrained 数据类型 . 正确的方法是
p_book_type TITLES.CATEGORY%TYPE
上面已经有人提到过,返回值的数据类型应为 BOOLEAN . 并且您不必在"IS"之后放置分号 .
variable 返回布尔值未声明 .
v_ReturnValue BOOLEAN;
记住, using BOOLEAN data type as return will NOT let you use the function in SQL . 因为,boolean不是SQL数据类型 . Boolean是 PL/SQL 数据类型 . 您只能使用PL / SQL中的函数而不能使用SQL中的函数 .
你的功能看起来像:
相当冗长 .
CREATE OR replace FUNCTION Checkbooktype (p_book_type titles.category%TYPE)
RETURN BOOLEAN
IS
v_returnvalue BOOLEAN;
BEGIN
IF ( p_book_type = 'business' ) THEN
v_returnvalue:= TRUE;
ELSE
v_returnvalue:= FALSE;
END IF;
RETURN v_returnvalue;
END checkbooktype;
/
或者,没有和 ELSE ,将返回默认值设置为 FALSE .
不那么冗长 .
CREATE OR replace FUNCTION Checkbooktype (p_book_type titles.category%TYPE)
RETURN BOOLEAN
IS
v_returnvalue BOOLEAN;
BEGIN
v_returnvalue:= FALSE;
IF ( p_book_type = 'business' ) THEN
v_returnvalue:= TRUE;
END IF;
RETURN v_returnvalue;
END checkbooktype;
/
@ APC的解决方案最简洁 .