密程序数据库触发子.sql

来自「oracle 10g管理员管理数据库SQL,好资料!」· SQL 代码 · 共 48 行

SQL
48
字号
Create or Replace Function ENCRYPT(Inpass In Varchar2,
                                   IN_GH  In Varchar2,
                                   IN_SS  In Varchar2) Return Varchar2 Is
  bcs  varchar2(20);
  bcs1 number;
  cs   number;
  jg   number;
  m_gh VARCHAR2(4);
  m_mm VARCHAR2(20);
Begin
  m_gh := IN_GH;
  m_mm := INPASS;
  cs   := TO_NUMBER(IN_SS);
  If cs <= 1 then
    cs := 77;
  end if;
  bcs := substr(to_char(ascii(substr(m_gh, 1, 1))), 1, 2);
  If bcs < '1' then
    bcs := '7';
  end if;
  m_gh := substr(m_gh, 2);
  Loop
    EXIT WHEN nvl(length(m_gh), 0) = 0;
    bcs  := bcs || substr(to_char(ascii(substr(m_gh, 1, 1))), -1, 1);
    m_gh := substr(m_gh, 2);
  End loop;
  Loop
    EXIT WHEN nvl(length(m_mm), 0) = 0;
    bcs  := bcs || substr(to_char(ascii(substr(m_mm, 1, 1))), -1, 1);
    m_mm := substr(m_mm, 2);
  End loop;
  bcs1 := to_number(bcs);
  jg   := cs * bcs1;
  Loop
    EXIT WHEN length(to_char(jg)) > 13;
    jg := jg * cs;
  End loop;
  RETURN(IN_SS || substr(to_char(jg), 1, 14));
End;


 



select ENCRYPT('32132323','22','1')  from dual;

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?