create or replace function fn_socialunicodecheck(i_socialuicode varchar2)
return number is
res number;
v_socialunicode varchar2(18 char);
type arraytype is varray(31) of char(1);
alphaarray arraytype;
i number(2) := 0;
checksum number(10) := 0;
v number(10);
checkcode char(1);
begin
/*统一社会信用代码由18位阿拉伯数字或英文大写字母表示(不包括I,O,Z,S,V以防止和阿拉伯字母混淆)
*第1位是登记管理部门代码 第2位是机构类别代码,第3-8位是登记管理机关行政区划代码,第9-17是主体标识码(组织机构代码)
*第18位是校验码,具体规范请见《GB 32100-2015 法人和其他组织统一社会信用代码编码规则》
*举例select fn_socialunicodecheck('12320700139008349D') from dual;
作者:秀峰 xiufeng.zhang@outlook.com QQ:823291475 2018-8-8 原创
v_socialunicode 由 varchar2(18) 改为varchar2(18 char) by 周壮伟
20210826 补充登记机关管理区划代码必须为数字
*/
if length(i_socialuicode) != 18 or i_socialuicode is null then
return 0;
end if;
v_socialunicode := upper(i_socialuicode);
Oracle统一社会信用代码校验函数
于 2022-11-03 14:31:20 首次发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)