我想创建一个通过传递用户名和密码来查询用户表的函数,如果用户名/密码正确则该函数返回'Y',如果不是,则返回'N'。< / p>
将返回值初始化为“N”,然后使用SQL%FOUND检查函数是否找到匹配项,以便为返回变量赋予“Y”。
我收到以下错误:06503. 00000 - “PL / SQL:函数返回没有值”
CREATE OR REPLACE FUNCTION VERIFY
( userName IN VARCHAR2,
userPassword VARCHAR2
)
RETURN VARCHAR2
AS
returnVar VARCHAR2(1):='N';
userID number;
zip number;
BEGIN
SELECT userId,SUBSTR(ZIPCODE, 1,3)
INTO userID,zip
FROM users
WHERE username = userName AND PASSWORD = userPassword;
if SQL%FOUND then
returnVar:='Y';
end if;
return returnVar;
EXCEPTION
WHEN NO_DATA_FOUND THEN DBMS_OUTPUT.PUT_LINE('NO DATA FOUND');
END VERIFY;
注意:如果你想知道为什么我选择了userID和zip:当函数正常工作并经过测试时,我会将它包含在一个包中,以便使userID和Zip Code全局可用,这是一个要求我正在进行的运动。
答案 0 :(得分:1)
我认为您的问题位于异常块中。
如果发生异常,则不返回任何内容。
在异常块的末尾插入例如RETURN returnVar;
,以便在发生异常时返回默认值。