我正在尝试使用一个过程验证创建一个包 MSGG_SESSION,该过程接受两个 VARCHAR2 参数作为用户名和密码。为当前人员 ID 放置一个包私有 NUMBER 变量。如果“authenticate”匹配 MSGG_USER 中的用户名和密码,则将匹配的 PERSON_ID 放入新变量中。当我把它放到 oracle sql developer 中时,我得到了错误。我已经创建了一个表 MSGG_SESSION 并且一个 MSGG_USER 表已经存在。(PRIV-NUMBER 是我当前人 ID 的包裹私人号码变量)
CREATE OR REPLACE PACKAGE MSGG_SESSION
IS
PROCEDURE AUTHENTICATE (USERNAME IN VARCHAR2, PASSWORD IN VARCHAR2);
FUNCTION AUTHENTICATED_USER RETURN VARCHAR2;
END MSGG_SESSION;
/
CREATE OR REPLACE PACKAGE BODY MSGG_SESSION
IS
PRIV_NUMBER VARCHAR2(100);
PROCEDURE AUTHENTICATE (USERNAME_TO_AUTH IN VARCHAR2, PASSWORD_TO_USE IN VARCHAR2)
IS
BEGIN
PRIV_NUMBER := NULL;
SELECT USERNAME
INTO PRIV_NUMBER
FROM
USER_PASSWORD
WHERE
lower(username) = lower(username_to_auth) and password = password_to_use;
exception
when NO_DATA_FOUND then
raise NOT_AUTHENTICATED;
when others then
raise;
END AUTHENTICATE;
FUNCTION GET_USER_ID
RETURN VARCHAR2
is
begin
return priv_number;
end get_user_id;
END MSGG_SESSION;
/