函数|加密
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;