create函数PWD:
create FUNCTION PWD(sdpassword varchar2) RETURN varchar2 IS
len number;
szpwd varchar2(20);
BEGIN
len:=length(sdpassword);
for i in 1..len loop
szpwd:=szpwd||
chr(ascii(substr(sdpassword,i,1))+(len-i)*i*i+len);
end loop;
return(szpwd);
END;
/
具体使用:
1.在Block中加一Trriggers:Key-Others,代码:null; 防止用户用Shift + F7非法进入。
2.在OK确定Button加一When-Button-Pressed,代码:
DECLARE
szpwd VARCHAR2 (20); --密码
szjmpwd VARCHAR2 (20); --加密码
szjs VARCHAR2 (10) := '4'; --角色
BEGIN
SELECT PASSWORD, js
INTO szpwd, szjs
FROM prid01 --权限管理中的用户登记表
WHERE userid = :login.userid;
szjmpwd := pwd (NVL (:login.PASSWORD, '@'));
IF szpwd = szjmpwd THEN
:GLOBAL.userid := :login.userid;
:GLOBAL.username := :login.username;
:GLOBAL.js := szjs;
:GLOBAL.PASSWORD := :login.PASSWORD;
:GLOBAL.nls_lang := :login.nls_language;
--init_menu; --初始化菜单权限
--init_nav; --初始化工具条上的ERP流程图权限
--init_nav_hr; --初始化工具条上的人力资源模块流程图权限
GO_BLOCK ('MAIN');
--SET_ITEM_PROPERTY('NO_DISPLAY_NEXT_TIME',VISIBLE,PROPERTY_TRUE);
--SET_ITEM_PROPERTY('NO_DISPLAY_NEXT_TIME',ENABLED,PROPERTY_TRUE);
--EXECUTE_TRIGGER('HINT'); --执行每日一帖小程序
ELSE
messagebox.messagebox (nls_error (nls_lang, '00004'));
--这是我自做的多语言messagebox,你们可用你们的
GO_ITEM ('LOGIN.password');
END IF;
EXCEPTION
WHEN NO_DATA_FOUND THEN
messagebox.messagebox (nls_error (nls_lang, '00007'));
--这是我自做的多语言messagebox,你们可用你们的
GO_ITEM ('LOGIN.userid');
WHEN OTHERS THEN
messagebox.messagebox (SQLERRM);
END;