您的位置:首页 > 数据库 > Oracle

oracle 自定义身份证15位转18位 函数

2011-08-18 16:54 615 查看
oracle 函数15位身份证号转18位身份证号,同时可以参考此代码编写身份证校验函数
/*15位身份证转18位*/

FUNCTION GET_NEWCERT(

OLDCERT IN VARCHAR2)

RETURN VARCHAR2

IS

NEW_CERT VARCHAR2(20);

OLD_CERT VARCHAR2(17);

I NUMBER;

SUMID NUMBER;

CHECKID VARCHAR2(34);

ENDID VARCHAR2(11);

BEGIN

ENDID :='10X98765432';

CHECKID :='0709100508040201060307091005080402';

SUMID :=0;

OLD_CERT :=SUBSTR(OLDCERT,1,6)||'19'||SUBSTR(OLDCERT,7,9);

IF LENGTH(OLDCERT)=15 AND FHTS_DATE.IS_DATE(SUBSTR(OLD_CERT,7,8))=0 THEN

FOR I IN 1..17

LOOP

SUMID:=SUMID+TO_NUMBER(SUBSTR(OLD_CERT,I,1))*TO_NUMBER(SUBSTR(CHECKID,I*2-1,2));

END LOOP;

NEW_CERT:= OLD_CERT||SUBSTR(ENDID,MOD(SUMID,11)+1,1);

ELSE

NEW_CERT:=OLDCERT;

END IF;

RETURN NEW_CERT;

END GET_NEWCERT;


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: