PLSQL存储过程校验身份证
CREATE OR REPLACE FUNCTION FUN_CHECKIDCARD(PI_AAC002 VARCHAR2)
RETURN VARCHAR2 IS
/******************************************************************************
* 程序名:身份证合法性校验FUN_CHECKIDCARD
* 程序功能:对人员的身份证合法性进行校验
* 输入:身份证号码
* 输出:返回值: 0 合法;
* 版本日期:2015-01-16
* 执行类型:用户手工执行
* 修改过程:
******************************************************************************/
TYPE UDT_CHECK IS TABLE OF NUMBER;
UDO_CHECK UDT_CHECK := UDT_CHECK(7,
9,
10,
5,
8,
4,
2,
1,
6,
3,
7,
9,
10,
5,
8,
4,
2); --初始化校验位
L_RESULT NUMBER := 0;
L_STR NUMBER;
BEGIN
--15位身份证
IF LENGTHB(PI_AAC002) = 15 THEN
--身份证号不对
IF FUN_ISDATE('19' || SUBSTR(PI_AAC002, 7, 6)) = 0 THEN
RETURN 1;
END IF;
IF FUN_ISNUMBER(PI_AAC002) = 0 THEN
RETURN 2;
END IF;
--18位身份证
ELSIF LENGTHB(PI_AAC002) = 18 THEN
IF FUN_ISDATE(SUBSTR(PI_AAC002, 7, 8)) = 0 THEN
RETURN 3;
END IF;
IF FUN_ISNUMBER(SUBSTR(PI_AAC002, 1, 17)) = 0 THEN
RETURN 4;
END IF;
IF FUN_ISNUMBER(SUBSTR(PI_AAC002, 18, 1)) = 0 OR
SUBSTR(PI_AAC002, 18, 1) <> 'x' OR SUBSTR(PI_AAC002, 18, 1) <> 'X' THEN
RETURN 5;
END IF;
--验证校验位开始
FOR I IN 1 .. LENGTH(PI_AAC002) - 1 LOOP
L_STR := SUBSTR(PI_AAC002, I, 1);
L_RESULT := L_RESULT + L_STR * UDO_CHECK(I);
END LOOP;
L_STR := MOD(L_RESULT, 11);
SELECT DECODE(L_STR,
0,
1,
1,
0,
2,
'X',
3,
9,
4,
8,
5,
7,
6,
6,
7,
5,
8,
4,
9,
3,
10,
2)
INTO L_RESULT
FROM DUAL;
IF SUBSTR(PI_AAC002, LENGTH(PI_AAC002), 1) <> L_RESULT THEN
RETURN 7;
ELSE
RETURN 0;
END IF;
ELSE
RETURN 6;
END IF;
RETURN 0;
END FUN_CHECKIDCARD;
其中FUN_ISDATE 与FUN_ISNUMBER分别是判断是否是时间或着数据的函数:
CREATE OR REPLACE FUNCTION FUN_ISDATE(PI_PARAMETER VARCHAR2)
RETURN VARCHAR2 IS
L_VAL DATE;
BEGIN
L_VAL := TO_DATE(NVL(PI_PARAMETER, 'a'), 'yyyy-mm-dd hh24:mi:ss');
RETURN 1;
EXCEPTION
WHEN OTHERS THEN
RETURN 0;
END FUN_ISDATE;
CREATE OR REPLACE FUNCTION FUN_ISNUMBER(PI_PARAMETER VARCHAR2)
RETURN VARCHAR2 IS
L_VAL NUMBER;
BEGIN
L_VAL := TO_NUMBER(NVL(PI_PARAMETER, 'a'));
RETURN 1;
EXCEPTION
WHEN OTHERS THEN
RETURN 0;
END FUN_ISNUMBER;
PLSQL存储过程校验身份证的更多相关文章
- JS校验身份证号的合法性
前端表单中有身份证号的校验,下边是用JS来校验身份证号的合法性. 中国居民身份证号码编码规则 第一.二位表示省(自治区.直辖市.特别行政区). 第三.四位表示市(地级市.自治州.盟及国家直辖市所属市辖 ...
- oracel存储过程编写 以及plsql存储过程的debug
1.语法: create or replace procedure messagebackup_createTable //此处存储过程名称不能超过30个字符 as tableName ...
- plsql 存储过程 测试
plsql 存储过程 测试 CreationTime--2018年8月14日09点54分 Author:Marydon 1.找到要运行的存储过程-->选中-->右键-->测试 2 ...
- js 校验身份证号
根据地区编码.身份证格式.18位身份证需要验证最后一位校验位 //校验身份证 function IdentityCodeValid(code) { var city = { 11: "北京& ...
- Oracle/PLSQL存储过程详解
原文链接:https://blog.csdn.net/zezezuiaiya/article/details/79557621 Oracle/PLSQL存储过程详解 2018-03-14 17:31: ...
- Java中校验身份证号合法性(真伪),获取出生日期、年龄、性别、籍贯
开发过程中有用的身份证号的业务场景,那么校验身份证的合法性就很重要了,另外还有通过身份证获取出生日期.年龄.性别.籍贯等信息, 下面是本人在开发中用到的关于校验身份证真伪的工具类,可以直接拿来使用,非 ...
- js校验身份证
1 <%@page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8" %> &l ...
- Js正则校验身份证号码
原文链接:http://gongwen.sinaapp.com/article-126-cmd 这个其实不难,在网上多找一下总会有意外收获的.但是工欲善其事,必先利其器.我们需要了解一下身份证号的规则 ...
- java校验身份证号码
/** * 18位身份证校验,粗略的校验 * @author lyl * @param idCard * @return */ public static boolean is18ByteIdCard ...
随机推荐
- linux内核下载
01最新版:https://www.kernel.org/ 02老旧版:https://www.kernel.org/pub/linux/kernel/v3.x/ ------------------ ...
- 在Ubuntu为Android硬件抽象层(HAL)模块编写JNI方法提供Java访问硬件服务接口(老罗学习笔记4)
在上两篇文章中,我们介绍了如何为Android系统的硬件编写驱动程序,包括如何在Linux内核空间实现内核驱动程序和在用户空间实现硬件抽象层接口.实现这两者的目的是为了向更上一层提供硬件访问接口,即为 ...
- Android上常见度量单位【xdpi、hdpi、mdpi、ldpi】解读
术语和概念 屏幕尺寸 屏幕的物理尺寸,以屏幕的对角线长度作为依据(比如 2.8寸, 3.5寸). 简而言之, Android把所有的屏幕尺寸简化为三大类:大,正常,和小. 程序可以针对这三种尺 ...
- hdu 4961 Boring Sum (思维 哈希 扫描)
题目链接 题意:给你一个数组,让你生成两个新的数组,A要求每个数如果能在它的前面找个最近的一个是它倍数的数,那就变成那个数,否则是自己,C是往后找,输出交叉相乘的和 分析: 这个题这种做法是O(n*s ...
- JS全局变量VAR和THIS
(注意)JS全局变量VAR和THIS 很多人都觉得在javascript声明一个变量,加var和不加var没有什么区别,实际上是一个错误的观点,如果在函数外面,也就是说在window区域加不加var确 ...
- 对于随机变量的标准差standard deviation、样本标准差sample standard deviation、标准误差standard error的解释
参考:http://blog.csdn.net/ysuncn/article/details/1749729
- C扩展Python
基本想法: 先看中文小介绍,再看英文详细文档. 1. 参考 首先参考THIS, IBM的工程师好像出了好多这样的文章啊,而且每次看到时间戳,我都想戳自己- -! 2. ERROR 可能遇到错误: fa ...
- (转)c & c++内存分配
一.预备知识—程序的内存分配 一个由c/C++编译的程序占用的内存分为以下几个部分1.栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等.其操作方式类似于 数据结构中的栈. ...
- 视频捕捉全教程(vc+vfw)
目 录 一. 视频捕获快速入门 二.基本的捕获设置 1.设置捕获速度: 2.设置终止捕获 3.捕获的时间限制 三.关于捕获窗口 1.创建一个AVICAP捕获窗口 2.将一个捕获窗口连接至捕获设备 3. ...
- [Everyday Mathematics]20150210
设正方体 $ABCD-A_1B_1C_1D_1$ 的棱长为 $1$, $E$ 为 $AB$ 的中点, $P$ 为体对角线 $BD_1$ 上一点, 当 $\angle CPE$ 最大时, 求三菱锥 $P ...