我想知道你是否可以提供帮助。
我的斗智斗勇。
我想创建一个带一个参数的函数。
这是我的代码。运行时我一直收到错误:
错误(3,19):PLS-00103:遇到符号“;”当期待以下之一时:
begin function pragma procedure子类型当前游标删除存在于先前的外部语言
代码
set serveroutput on;
CREATE OR REPLACE FUNCTION CheckBookType (
p_book_type TITLES.CATEGORY
) RETURN BOOLAN IS;
BEGIN
IF (p_book_type = 'business') THEN
return true;
ELSE
return false;
END IF;
RETURN v_ReturnValue;
END CheckBookType;
答案 0 :(得分:1)
最简单的解决方案:
CREATE OR REPLACE FUNCTION CheckBookType (
p_book_type IN TITLES.CATEGORY%type
) RETURN BOOLEAN
IS
BEGIN
return p_book_type = 'business';
END CheckBookType;
答案 1 :(得分:0)
让我们在您的代码中逐行查看问题:
设置serveroutput;
它没有造成任何伤害,但我不知道它在上下文中有何帮助或需要。
p_book_type TITLES.CATEGORY
错误,因为您需要使用constrained
指定它是%TYPE attribute
数据类型。正确的方法是
p_book_type TITLES.CATEGORY%TYPE
上面已经有人提到过,返回值的数据类型应该是BOOLEAN
。并且你不必在" IS"之后放置分号。
未声明返回布尔值的variable
。
v_ReturnValue BOOLEAN;
BOOLEAN
数据类型作为回报将不允许您使用function
中的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的解决方案最简洁。