今天是 2017年09月26日 星期二
信息检索:
社会主义核心价值观:富强、民主、文明、和谐、自由、平等、公正、法治、爱国、敬业、诚信、友善。        审计人员核心价值观:责任、忠诚、清廉、依法、独立、奉献。
当前位置:首页 > 审计研究

编写带分隔符不规则科目编码函数的 设计思路及实现方法

发布日期:2017-08-22 发布人:管理员

审计人员在使用手工将财务数据导入AO2011现场审计实施系统时,经常遇到带有分隔符号的会计科目编码,尽管AO2011向导提供了带分隔符的科目编码处理方法,但是导入最终不能通过校验,如果会计科目编码各级次的长度是相同的,审计人员将分隔符替换为空即可,如果科目编码相同级次的长度不一致,则必须将相同级次的科目转换为相同的长度,处理起来相当棘手。下面分别从SQL SERVER和ORACLE两个方面,介绍使用函数处理的不规则编码的思路。

一、函数编写的设计思路

对于输入的带分隔符的科目编码,从中提取出指定级次的科目,如果科目长度小于指定的长度,则在原科目代码前加上前导0,达到指定的长度,否则右截取编码至指定的长度。函数应设置4个参数:原字符串、分隔符、处理级别及指定长度。

二、函数实现功能

对于输入的字符串,提取出指定级次的字符串,加上前导0或者右截取,达到指定的长度。

三、实现方法描述

1、SQL SERVER实现步骤

(1)首先利用自连接方式创建一张数字表,包括1至10000的单列整型数值;

(2)定义2个表变量,用于存储函数参数指定的字符串(单行单列),另一个用于按顺序存储从字符串中提取每级字符(2列,顺序号及各级次字符串);

(3)将步骤2中存储原字符串的表变量与数字表通过“substring(分隔符+字符串,n,1)=分隔符”、“n<=len(字符串)+ 1”条件关联,配合使用charindex函数,设法找到每个级次字符的起始与结束位置,从而计算出每级字符应提取的数字长度,再利用substring、row_number函数按顺序取出每级字符,并插入到另一表变量中,包括顺序号与各级字符串;

(4)根据函数参数指定的级次,从表变量中提取出特定级次的字符(级次与顺序号相等);

(5)判断长度,使用replicate与right函数填充前导0或右截取步骤4中的字符串,使字符达到指定的长度,并返回该值。

2、ORACLE实现步骤

(1)利用instr函数设法找到指定级次字符的起始位置与结束位置;

(2)计算步骤1中起始位置与结束位置的差值,即应提取该指定级次的字符;

(3)判断步骤2中提取的字符长度,利用lpad函数填充前导0或者利用substr函数从右向左截取指定长度的字符,并最终返回该字符串。

ORACLE实现方法较为容易,得益于instr函数第4个参数,即第几次出现,而SQL SERVER中的charindex则没有此功能,从而导致代码冗长,建议微软应对此函数进行改进。

有了上述函数,则可以轻松处理带分隔符的不规则会计科目。


(南陵县审计局 方心富)

领导介绍 | 机构设置 | 人事信息 | 综合快讯 | 五年创新计划 | “两学一做”专栏 | 审计结果公告(年度) | 廉政之窗 | 机关党建 | 公告栏