读书人

这个包体如何编译都错!包头也贴出来!1

发布时间: 2012-02-25 10:01:49 作者: rapoo

这个包体怎么编译都错!包头也贴出来!1
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; 


--------------------------包头


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;




[解决办法]
用show errors;看看错误提示是什么?
再把错误提示帖出来!!方便找错误
[解决办法]
字符错误!!楼主是直接从网上COPY 到sql*plus 上调试的吧?
你把有空格符的地方在SQL*PLUS 里全部重新用空格符代替就可以了!!!

记得还要建一个表:Test_User
CREATE TABLE Test_User (UserName VARCHAR2(30) NOT NULL
Password VARCHAR2(2000)NOT NUL)
-------------------------------------
1 CREATE OR REPLACE PACKAGE BODY Test_MD5 AS
2 function FN_GetMD5 (p_str IN VARCHAR2)
3 RETURN VARCHAR2 is
4 BEGIN
5 RETURN DBMS_OBFUSCATION_TOOLKIT.MD5(input_string => Upper(P_Str));
6 END FN_GetMD5;
7 Function FN_CheckUser
8 (P_UserName in VARCHAR2,
9 P_Password in VARCHAR2)
10 Return Number
11 Is
12 L_Password VarChar2(2000);
13 BEGIN
14 SELECT
15 Utl_Raw.Cast_To_Raw(Password)
16 INTO
17 L_Password
18 FROM
19 Test_User
20 WHERE
21 Upper(UserName) = UPPER(P_UserName);
22 If Utl_Raw.Cast_To_Raw(FN_GetMD5(P_Password))=L_Password Then
23 Return 1;
24 Else
25 Return 0;
26 End If;
27 EXCEPTION
28 WHEN NO_DATA_FOUND THEN
29 Return 0;
30 END;
31* End;
SQL> /

程序包主体已创建

读书人网 >oracle

热点推荐