个人总结验证登录的存储过程(oracle9.0.0.1)

[size=18][/size]
参加了一个学校的商业项目,项目周期历时十五天,虽然不长但是确实学到很多东西。同时终于有机会接触到oracle的DBMS觉得他正事态牛了~~~~~~~
这个项目是个酒店管理系统,
操作系统是WIN2003,
数据层实用的JSP+servlet,
数据库是oracle9.0.0.1.
学到太多东西需要总结,终于明白学习知识与学习能力的不同。
实际项目中是没有时间让你去慢慢摸索的,要求的是快速,高效的开发。
方法,理念也学到很多,但是技术是要总结的。
这次用的是包开发,将n个作用类存储过程放在同一个包内~~~~~~~
包开发的好处是,将接口统一,减少了访问数据库的频率,使系统运行效率有效提高
下面是一个验证用户登陆的存储过程
[code]
--登录
procedure login(p_username in emsuser.username%type,
p_password in varchar2,
p_result out number) as
v_password raw(128);
begin
p_result := -1;
v_password:=emsencry(UPPER(trim(P_PASSWORD)));
SELECT /*+Rule*/
COUNT(USERID) INTO p_result
FROM EMSUSER
WHERE UPPER(trim(USERNAME))=UPPER(trim(p_username))
AND upper(trim(PASSWORD))=upper(trim(v_password))
AND VALID=0;
IF P_RESULT>0 THEN
SELECT /*+Rule*/
ROLEID INTO p_result
FROM EMSUSER
WHERE UPPER(trim(USERNAME))=UPPER(trim(p_username))
AND UPPER(trim(PASSWORD))=upper(trim(v_password))
AND VALID=0;
ELSE
P_RESULT:=-1;
END IF;

end login; [/code]
上面用到的128位md5加密算法是在本站上找到的。
也谢谢作者。算法如下
[code]
FUNCTION EMSENCRY (input_string IN VARCHAR2)--加密算法
RETURN VARCHAR2
IS
raw_input RAW (128):= UTL_RAW.cast_to_raw (input_string);
decrypted_raw RAW (2048);
error_in_input_buffer_length EXCEPTION;
BEGIN
DBMS_OBFUSCATION_TOOLKIT.md5 (input => raw_input,
checksum => decrypted_raw
);
RETURN LOWER (RAWTOHEX (decrypted_raw));
END;
[/code]
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值