📄 oracle开发技巧-12.htm
字号:
<body bgcolor="#000000">
<p><font color="#FFFFFF"> <font color="#009900">ORACLE应用经验(4)-加密程序 </font><br>
<br>
</font></p>
<p><font color="#FFFFFF">-------------1. 加密程序数据库触发子scjmmm----------------------
<br>
REM 对GHXXB制立数据库触发子(当INSERT OR UPDATE GHXXB时触发) <br>
drop trigger scjmmm; <br>
create or replace trigger scjmmm <br>
before insert or update of mm On ghxxb For each Row <br>
Begin <br>
:new.mm:=ENCRYPT(:new.mm,:NEW.GH,TO_CHAR(SYSDATE,'SS')); <br>
End; <br>
/ <br>
-------------2. 密码的加密程序ENCRYPT---------------------- <br>
Create or Replace <br>
Function ENCRYPT (Inpass In Varchar2,IN_GH In Varchar2,IN_SS In Varchar2) <br>
Return Varchar2 Is <br>
bcs varchar2(20); <br>
bcs1 number; <br>
cs number; <br>
jg number; <br>
m_gh VARCHAR2(4); <br>
m_mm VARCHAR2(20); <br>
Begin <br>
m_gh:=IN_GH; <br>
m_mm:=INPASS; <br>
cs:=TO_NUMBER(IN_SS); <br>
If cs<=1 then cs:=77 ;end if; <br>
bcs:=substr(to_char(ascii(substr(m_gh,1,1))),1,2); <br>
If bcs<'1' then bcs:='7' ;end if; <br>
m_gh:=substr(m_gh,2); <br>
Loop EXIT WHEN nvl(length(m_gh),0)=0 ; <br>
bcs:=bcs||substr(to_char(ascii(substr(m_gh,1,1))),-1,1); <br>
m_gh:=substr(m_gh,2); <br>
End loop; <br>
Loop EXIT WHEN nvl(length(m_mm),0)=0 ; <br>
bcs:=bcs||substr(to_char(ascii(substr(m_mm,1,1))),-1,1); <br>
m_mm:=substr(m_mm,2); <br>
End loop; <br>
bcs1:=to_number(bcs); <br>
jg:=cs*bcs1; <br>
Loop EXIT WHEN length(to_char(jg))>13; <br>
jg:=jg*cs ; <br>
End loop; <br>
RETURN(IN_SS||substr(to_char(jg),1,14)); <br>
End; <br>
/ <br>
grant execute on ENCRYPT to public; <br>
<br>
</font></p>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -