« 正在进行新的插件开发中,强大的友情链接加网站收藏« »过年要到了,准备回家,各位朋友新年快乐 »
发布一个oracle函数,身份证校验码生成函数

 以前从来没想过要这种函数,后来公司说,程序里的一些重要的编号都要带一个验证码,要求我使用身份证的校验码方法,我从公司以前的oracle数据库里找到了以下的oracle函数,公布一下,大家共享一下,哈哈.使用了这个函数的朋友记得常来我这里顶顶哦.巴士飞扬 www.busfly.cn 时刻 欢迎你的来访,共同学习进步

-- 生成身份证号码的 校验位 ISO 7064:1983.MOD 11-2校验码计算出来的检验码(公司内部函数,保密,保密~~~~~)

create or replace function getVerify_ISO7064(

idcard in varchar2

) return varchar

as


type vi_TYPE is varray(11) of varchar2(1);

vi vi_TYPE := vi_TYPE('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');

v_num number;

v_sum number;

begin
if idcard is null then return null ; end if;
v_sum := 0;
v_num := length(idcard);
for i in 1 .. v_num loop
v_sum := v_sum + (power(2,v_num -i+1) mod 11 ) * to_number(substr(idcard,i,1));
-- DBMS_OUTPUT.PUT_LINE(v_sum);
end loop;
v_sum := v_sum mod 11;
return vi(v_sum+1);
end getVerify_ISO7064;

 

OK了,现在你可以用你的身份证试一下了,你的身份证最后一位就是验证码,把最后一位留下,其它的当参数输入进去查一下就知道了,这个函数不是专门为身份证做的,任意长度的都可以.我公司是用来作为编号的最后一位.

以下是公司里的用法,再写了一个函数,将产生的验证码的X改成0,因为编号里一般只有数字,再连接到原字符串后面,返回:

create or replace function make_Verify_pcard_id (
idcard in varchar2 --未带校验位的纸卡编号
) return varchar
as -- 生成带校验位的纸卡编号
v_verify_char varchar2(1);
begin
v_verify_char := getVerify_ISO7064(idcard) ;
if v_verify_char = 'X' then v_verify_char := '0'; end if;

return idcard || v_verify_char;

end ;

 我后来把这个仿照这个函数,改装成了VC++的函数,代码现在找不到了,等找到了,再发布一下吧

 


Tags: oracle数据库   |

原创文章如转载,请注明:转载自:巴士飞扬-技术BLOG : http://www.busfly.net/

本文链接地址:http://www.busfly.net/post/oracle-pass-make_Verify_pcard_id.html

如果你喜欢本文,请顶一下,支持我,你的支持是我继续发好文章的最大动力。谢谢。
好东西需要分享,快把本文发给你的朋友吧~!~

     
相关文章:




◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。
网站分类
分类最近文章
最近发表
最新评论及回复
最近留言
热文排行
随机推荐文章
Powered By Z-Blog   STYLE by busfly . FatMouse
Copyright © 2007 巴士飞扬技术博客. . 沪ICP备07027972号. 会员群1(J2EE为主):3769186.