资源描述:
《位身份证升级为18位并查询其信息》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、--15位身份证升级为18位并查询其信息createorreplaceproceduref_changecard(p_cert_numinvarchar2)asv_cert_numvarchar2(30);v_typevarchar2(20);v_sumvarchar2(10);--v_sum_mvarchar2(10);v_yuvarchar2(4);v_newvarchar(30);v_nianvarchar(4);v_yuevarchar(4);v_rivarchar(4);v_sexvarchar2(2);v_sfvarchar2(10);v_sf_fvarchar2(4);-
2、-v_yu_yvarchar2(4);beginexecuteimmediate'selectlength(:p_cert_num)fromdual'intov_typeusingp_cert_num;executeimmediate'select(selectsubstr((select:p_cert_numfromdual),1,6)fromdual)
3、
4、19
5、
6、(selectsubstr((select:p_cert_numfromdual),7,9)fromdual)fromdual'intov_cert_numusingp_cert_num,p_cert_num;--判断身份
7、证是否为15位ifv_type<>15thendbms_output.put_line('请输入证件号为15位的身份证信息');else--校验取余v_sum:=substr(v_cert_num,1,1)*7+substr(v_cert_num,2,1)*9+substr(v_cert_num,3,1)*10+substr(v_cert_num,4,1)*5+substr(v_cert_num,5,1)*8+substr(v_cert_num,6,1)*4+substr(v_cert_num,7,1)*2+substr(v_cert_num,8,1)*1+substr(v_cert_
8、num,9,1)*6+substr(v_cert_num,10,1)*3+substr(v_cert_num,11,1)*7+substr(v_cert_num,12,1)*9+substr(v_cert_num,13,1)*10+substr(v_cert_num,14,1)*5+substr(v_cert_num,15,1)*8+substr(v_cert_num,16,1)*4+substr(v_cert_num,17,1)*2;--取出生年月v_nian:=substr(v_cert_num,7,4);v_yue:=substr(v_cert_num,11,2);v_ri:=s
9、ubstr(v_cert_num,13,2);--取性别v_sex:=substr(v_cert_num,17,1);--取地区v_sf:=substr(v_cert_num,1,6);v_sf_f:=substr(v_cert_num,1,2);--7910584216379105842v_yu:=mod(v_sum,11);--012345678910,10X98765432--得出新18位证件号ifv_yu=0thenv_new:=v_cert_num
10、
11、'1';elsifv_yu=1thenv_new:=v_cert_num
12、
13、'0';elsifv_yu=2thenv_new:
14、=v_cert_num
15、
16、'X';elsifv_yu=3thenv_new:=v_cert_num
17、
18、'9';elsifv_yu=4thenv_new:=v_cert_num
19、
20、'8';elsifv_yu=5thenv_new:=v_cert_num
21、
22、'7';elsifv_yu=6thenv_new:=v_cert_num
23、
24、'6';elsifv_yu=7thenv_new:=v_cert_num
25、
26、'5';elsifv_yu=8thenv_new:=v_cert_num
27、
28、'4';elsifv_yu=9thenv_new:=v_cert_num
29、
30、'3';elsifv_yu=10t
31、henv_new:=v_cert_num
32、
33、'2';endif;--判断新产生的18位身份证号码真伪依据月份日期判断只能。。。。ifv_yuebetween'01'and'12'thencasewhenv_ribetween'01'and'31'thendbms_output.put_line('您的18位身份证号是:'
34、
35、v_new);dbms_output.put_line('您的生日是:'
36、
37、v_nian
38、
39、'年'
40、
41、v_yue
42、
43、'月'