Create Or Replace Package Test_MD5 AS
Function FN_GetMD5(P_Str In VarChar2)
Return VarChar2;
Function FN_CheckUser
(P_UserName In VarChar2
,P_Password In VarChar2)
Return Number;
End;Create Or Replace Package Test_MD5 AS
Function FN_GetMD5(P_Str In VarChar2)
Return VarChar2;
Function FN_CheckUser
(P_UserName In VarChar2
,P_Password In VarChar2)
Return Number;
End;
/
CREATE OR REPLACE PACKAGE BODY Test_MD5 AS
FUNCTION FN_GetMD5 (P_Str IN VARCHAR2)
RETURN VARCHAR2 AS
BEGIN
RETURN DBMS_OBFUSCATION_TOOLKIT.MD5(
input_string => Upper(P_Str));
END; Function FN_CheckUser
(P_UserName IN VARCHAR2
,P_Password IN VARCHAR2)
Return Number
Is
L_Password VarChar2(2000);
BEGIN
SELECT
Utl_Raw.Cast_To_Raw(Password)
INTO
L_Password
FROM
Test_User
WHERE
Upper(UserName) = UPPER(P_UserName);
If Utl_Raw.Cast_To_Raw(FN_GetMD5(P_Password))=L_Password
Return 1;
Else
Return 0;
End If;
EXCEPTION
WHEN NO_DATA_FOUND THEN
Return 0;
END;
End;
/ 报错如下PLS-00103: 出现符号 ""在需要下列之一时:
end function package pragma
private procedure subtype type use <an identifier>
<a double-quoted delimited-identifier> form current cursor我还是第一次写包,一点语法基础都没有
If Utl_Raw.Cast_To_Raw(FN_GetMD5(P_Password))=L_Password then Return 1;
Else
Return 0;
End If;
改为
If Utl_Raw.Cast_To_Raw(FN_GetMD5(P_Password))=L_Password then
Return 1;
Else
Return 0;
End If;
CREATE OR REPLACE PACKAGE Test_MD5 AS
FUNCTION FN_GetMD5(P_Str IN VARCHAR2) RETURN VARCHAR2;
FUNCTION FN_CheckUser(P_UserName IN VARCHAR2, P_Password IN VARCHAR2) RETURN NUMBER;
END;
/
CREATE OR REPLACE PACKAGE BODY Test_MD5 AS
FUNCTION FN_GetMD5(P_Str IN VARCHAR2) RETURN VARCHAR2 AS
BEGIN
RETURN DBMS_OBFUSCATION_TOOLKIT.MD5(input_string => Upper(P_Str));
END;
FUNCTION FN_CheckUser(P_UserName IN VARCHAR2, P_Password IN VARCHAR2) RETURN NUMBER IS
L_Password VARCHAR2(2000);
BEGIN
SELECT Utl_Raw.Cast_To_Raw(Password)
INTO L_Password
FROM Test_User
WHERE Upper(UserName) = UPPER(P_UserName);
IF Utl_Raw.Cast_To_Raw(FN_GetMD5(P_Password)) = L_Password THEN
RETURN 1;
ELSE
RETURN 0;
END IF;
EXCEPTION
WHEN NO_DATA_FOUND THEN
RETURN 0;
END;
END;
/