家电下乡补贴ASL代码调用SQL Server 用户数据库和SQL自定义标量值函数计算机审计方法.docx
《家电下乡补贴ASL代码调用SQL Server 用户数据库和SQL自定义标量值函数计算机审计方法.docx》由会员分享,可在线阅读,更多相关《家电下乡补贴ASL代码调用SQL Server 用户数据库和SQL自定义标量值函数计算机审计方法.docx(110页珍藏版)》请在冰点文库上搜索。
家电下乡补贴ASL代码调用SQLServer用户数据库和SQL自定义标量值函数计算机审计方法
ASL代码调用SQLServer2008用户数据库和SQL自定义标量值函数
计算机审计方法
一、方法代码
二、方法名称
ASL代码调用SQLServer2008用户数据库和SQL自定义标量值函数计算机审计方法
三、目标功能
审计目标:
作者将开发成功的AO_ASL程序代码远程调用SQLServer2008用户数据库和SQL自定义标量值函数最新科研成果融入本计算机审计方法,并以此实证检查财政、商务等部门单位,以及销售网点(商家)家电下乡补贴财政专项资金管理使用的真实、合法和效益情况。
审计功能:
突破AO2011审计方法应用瓶颈,通过远程调用SQLServer2008用户自定义数据库和SQL自定义标量值函数,探索实现AO2011审计方法的潜在功能,充分展示ASL程序代码在远程调用或兼容同质数据库上的强大功效。
在实现途径上,采取贯穿“多维数据集成”的计算机审计思路,通过家电下乡补贴兑付原始数据内引外联不同层面的业务数据,实施科学、快捷、深层次的分析性复核,发现和锁定是否存在虚构(购买)销售行为、冒用他人户籍资料套取家电下乡补贴财政专项资金,以及销售网点(商家)偷逃增值税等违纪违规问题。
本方法取材于北京易商海泰克公司开发的全国家电下乡信息管理系统数据库备份数据。
本方法在思路和实现路径上具有较强的一致性和通用性。
由于本方法有大小步骤30多个,在联想T420型笔记本电脑上,附加本方法备份数据,用鼠标点击、中速、不间断操作全程,耗时约8分钟,其中:
“步骤2.3:
整理基础表[ASL双层嵌套循环及IF分支结构动态行列转置]”,耗时约2分钟。
“步骤4:
▲图表分析”宜手动执行。
遇耗时较多的步骤宜耐心等待。
关于本审计方法相关课题研究成果的特别提示:
为探索实现AO2011现场审计实施系统中ASL代码程序潜在的功能,近年来作者在担任财政审计组长或主审的过程中,进行了系列计算机审计实证课题研究,通过本方法主要展示以下6项原创性实证研究成果与同行共享:
1、通过ASL程序代码远程调用SQLServer2008用户数据库。
原创性的解决了AO2011审计方法自动远程调用SQLServer2008用户自定义数据库的瓶颈问题。
为一线审计人员和科研人员提供了更加广阔的AO2011使用空间,对提高ASL程序代码性能提供了另外一种科学有效途径。
2、通过ASL程序代码远程调用SQL自定义标量值函数。
原创性的解决了AO2011审计方法自动远程调用SQL自定义标量值函数的瓶颈问题,大幅度简化了运算。
实现了各种SQL自定义标量值函数简单、简约、精准的审计应用价值,免除了审计人员大量的SQL语句编制烦恼,为一线的审计人员节约了宝贵的现场审计时间。
同时,为本审计方法的使用者(用户)整理和预备了一个长期有用、基于SQLServer2008的SQL自定义标量值函数库(库名:
AA_SQL审计专用函数库,封装了10余种SQL函数)。
3、通过ASL程序代码实现数据完整性检测功能。
主要通过配合使用SQL游标,原创性的解决了对数据表记录总量一次性完成数据完整性检测的瓶颈问题。
4、通过ASL程序代码实现审计数据表动态列行转置功能。
深度开发与运用ASL代码双层嵌套循环以及IF分支结构,加上配合使用SQLServer2008的排名开窗函数【通用语法结构:
row_number()over(partitionby字段名称orderbyID)】,原创性的解决了通过ASL代码实现审计数据表动态列行转置的瓶颈问题,大幅度简化了运算。
5、通过ASL程序代码实现SQL动态交叉表功能。
原创性的解决了通过ASL代码实现SQL动态交叉表的瓶颈问题,大幅度简化了运算。
6、通过ASL程序代码实现制作审计报表功能。
主要通过配合使用SQLFORXMLPATH语句块,原创性的解决了根据各种审计疑点制作汇总报表的瓶颈问题。
四、审计事项
预算执行审计/财政专项审计/家电下乡补贴资金/支出真实性审查
预算执行审计/财政专项审计/家电下乡补贴资金/支出合法性审查
预算执行审计/财政专项审计/家电下乡补贴资金/支出效益性审查
五、所需数据
表1本审计方法所需数据资料
序号
数据资料名称
结构化
非结构化
半结构化
1
家电下乡补贴明细表(主表,ORACLEPLSQL导出CSV数据)
√
2
家电销售网点备案表(2012年)
√
3
全员人口信息表(2012年)
√
4
城镇低保户信息表(2012年)
√
5
农村低保户信息表(2012年)
√
6
农村分散五保户信息表(2012年)
√
7
集中供养五保户信息表(2012年)
√
8
村干部工资表(2012年)
√
9
增值税征收明细表(2009-2012年)
√
10
政府采购明细表(2010-2012年)
√
11
财政部门家电下乡补贴会计报表(2009-2012年)
√
12
财政、商务部门家电下乡工作总结(2009-2012年)
√
13
财政、商务部门防骗补统计资料(2009-2012年)
√
14
家电下乡补贴标准等法规文件资料(2009-2012年)
√
(1)基础表:
家电下乡补贴明细表。
数据元素:
购买者姓名,身份证号码,购买者地址,产品类型,产品价格,补贴金额,受理部门,销售网点,标识卡号,补贴时间,补贴状态。
(2)基础表:
家电销售网点备案表。
数据元素:
ID,字段名称,字段值。
(3)基础表:
全员人口信息表。
数据元素:
户号,户口性质,户口姓名,与户主关系,身份证号码,住址,注销原因,注销时间。
(4)基础表:
城镇低保户信息表。
数据元素:
城低户主姓名,城低家庭成员姓名,城低保障人口数,城低身份证号A,机构号,城低起始发放日期,城低地址,城低身份证号。
(5)基础表:
农村低保户信息表。
数据元素:
对象代码,姓名,身份证号码,家庭住址,发放账号,补贴金额,保障人口数。
(6)基础表:
农村分散五保户信息表。
数据元素:
姓名,身份证号码,家庭住址,发放年度,类别。
(7)基础表:
集中供养五保户信息表。
数据元素:
姓名,身份证号码,类别,街道乡镇,村名,地址。
(8)基础表:
增值税征收明细表。
数据元素:
年度,税务机关,纳税人识别号,纳税人名称,税种,增值税额。
(9)基础表:
村干部工资表。
数据元素:
年度,姓名,身份证号码,家庭住址,类型名称,状态,总金额。
(10)基础表:
政府采购明细表。
数据元素:
采购单位,归口处室,合同编号,采购时间,采购项目,数量,采购方式,资金来源,采购金额,中介名称,中介代理编号,中标商名称,支付进度,是否大型采购,采购品目分类,分类B,分类C,备注。
六、分析步骤
步骤
内容
1
步骤1:
▲数据完整性检测
1.1
步骤1.1:
全部基础表及其记录数量检测
步骤分析:
通过ASL程序代码【初始】调用用户自定义SQL数据库【库名:
JDXX】,利用[SQL游标]实现对全部基础表及其记录数量检测,并与纸质报表等非结构化数据核对一致。
1.2
步骤1.2:
主表按受理部门总销量和总补贴金额分组检测
步骤分析:
通过ASL程序代码调用用户自定义SQL数据库【库名:
JDXX】,利用[SQL动态列转行],自动按受理部门总销量和总补贴统计数量和金额,并与纸质报表等非结构化数据核对一致。
1.3
步骤1.3:
主表[身份证号码]合规性检测
步骤分析:
通过ASL程序代码调用用户自定义SQL数据库【库名:
JDXX】,[调用SQL自定义函数](函数名:
IS_SFZH、Get_Sex)对[身份证号码]合规性进行检测,生成“身份证号码合规性勘误表”,自动送入用户自定义SQL数据库和AO进行管理,同时以此通知被审计单位进行误报数据更正。
2
步骤2:
▲建立审计中间表
2.1
步骤2.1:
清洗基础表[姓名]字段
步骤分析:
通过ASL程序代码调用用户自定义SQL数据库【库名:
JDXX】,[调用SQL自定义函数](函数名:
Get_Chinese)清洗基础表中[姓名]字段的非汉字字符,制备标准的[姓名]中文字段。
2.2
步骤2.2:
清洗基础表[身份证号码]字段
步骤分析:
通过ASL程序代码调用用户自定义SQL数据库【库名:
JDXX】,[调用SQL自定义函数](函数名:
Get_Number)去除[身份证号码]中的隐藏非[0-9]和非英语字母[X]的字符,调用方法:
【AA_SQL审计专用函数库.dbo.Get_Number(身份证号码)】,制备标准的[身份证号码]字段。
2.3
步骤2.3:
整理基础表
步骤分析:
通过ASL程序代码调用用户自定义SQL数据库【库名:
JDXX】,利用[ASL双层嵌套循环及IF分支结构]实现SQL动态行列转置,将以WORD文档方式保存的非结构化原始基础表进行标准化改造。
生成[临时表A]时运用了SQLServer2008的排名开窗函数(结构与SQL用法:
row_number()over(partitionby字段名称orderbyID)),为源数据表的同一或不同分区添加序列号。
本步骤在4处创建了SQL聚集索引以提高执行效率和整体性能。
2.4
步骤2.4:
创建审计中间表
步骤分析:
通过ASL程序代码调用用户自定义SQL数据库【库名:
JDXX】,在leftjoin连接查询中[调用SQL自定义函数](函数名:
ID18TO15、Get_Number),简化运算。
生成审计中间表。
3
步骤3:
▲数据集成分析性复核
3.1
步骤3.1:
按产品类型分年度总体趋势分析
步骤分析:
通过ASL程序代码调用用户自定义SQL数据库【库名:
JDXX】,配合使用[SQL动态交叉表],生成“按产品类型分年度总体趋势分析结果表”。
根据变动趋势研究确定延伸审计重点。
3.2
步骤3.2:
按受理部门分产品趋势分析
步骤分析:
通过ASL程序代码调用用户自定义SQL数据库【库名:
JDXX】,配合使用[SQL动态交叉表],生成“按受理部门分产品趋势分析结果表”。
根据变动趋势研究确定延伸审计重点。
3.3
步骤3.3:
按受理部门分年度分产品趋势分析
步骤分析:
通过ASL程序代码调用用户自定义SQL数据库【库名:
JDXX】,配合使用[SQL动态交叉表],生成“按受理部门分年度分产品趋势分析结果表”。
根据变动趋势研究确定延伸审计重点。
3.4
步骤3.4:
按销售网点分年度分产品趋势分析
步骤分析:
通过ASL程序代码调用用户自定义SQL数据库【库名:
JDXX】,配合使用[SQL动态交叉表],生成“按销售网点分年度分产品趋势分析结果表”。
根据变动趋势研究确定延伸审计重点。
3.5
步骤3.5:
按销售网点(异地分店)分年度分产品趋势分析
步骤分析:
通过ASL程序代码调用用户自定义SQL数据库【库名:
JDXX】,配合使用[SQL动态交叉表],生成“按销售网点(异地分店)分年度分产品趋势分析结果表”。
根据变动趋势研究确定延伸审计重点。
3.6
步骤3.6:
销售网点增值税纳税数据趋势分析
步骤分析:
通过ASL程序代码调用用户自定义SQL数据库【库名:
JDXX】,配合使用[SQL动态交叉表],生成“销售网点增值税纳税数据趋势分析结果表”。
根据波动情况重点抽查核实商家偷逃增值税的问题事实。
3.7
步骤3.7:
按政府采购相关数据趋势分析
步骤分析:
通过ASL程序代码调用用户自定义SQL数据库【库名:
JDXX】,配合使用[SQL动态交叉表],生成“按政府采购相关数据趋势分析结果表”。
根据变动趋势确定党政机关外调重点。
发现疑点现场拍照。
4
步骤4:
▲图表分析
4.1
步骤4.1:
普通模式输出图表分析
步骤分析:
通过ASL程序代码调用用户自定义SQL数据库【库名:
JDXX】,配合使用ASL程序代码的图表输出功能,进行图形化分析。
4.2
步骤4.2:
循环模式输出图表分析
步骤分析:
通过ASL程序代码调用用户自定义SQL数据库【库名:
JDXX】,配合使用ASL程序代码图表输出功能,进行动态图形化分析。
5
步骤5:
▲数据分类分析性复核
5.1
步骤5.1:
输入参数查询虚构连续购买(每户单品2台)行为套取补贴审查
步骤分析:
通过ASL程序代码调用用户自定义SQL数据库【库名:
JDXX】,输入参数查询虚构连续购买(每户单品2台)行为,生成“普查表”、“重点排查表”。
经检查,确实存在虚构连续购买情况,且第二次虚构行为的时间集中出现在一到两周(1-15天)以内。
这些情况已予以重点关注。
实证反映这也是占比较大的严重违规行为,商家垫付阶段较普遍。
5.2
步骤5.2:
超标核准购买和补贴每户单品2台以上审查
步骤分析:
通过ASL程序代码调用用户自定义SQL数据库【库名:
JDXX】,查询生成“超标核准每户单品购买和补贴2台以上明细表”。
按照全国家电下乡补贴信息系统设计要求,此类情况是不可出现的,但经检查发现,系统存在一定控制漏洞,这一部分疑点应予重点关注。
5.3
步骤5.3:
商家利用本家庭户籍虚构销售行为套取补贴审查
步骤分析:
通过ASL程序代码调用用户自定义SQL数据库【库名:
JDXX】,生成“商家利用本家庭户籍虚构销售行为明细表”,延伸调查核实商家监守自盗的问题。
这是一种性质较为严重问题,应予重点关注。
5.4
步骤5.4:
持同一户口本异地冒领补贴审查
步骤分析:
通过ASL程序代码调用用户自定义SQL数据库【库名:
JDXX】,生成“持同一户口本异地冒领补贴明细表”。
实证反映,大部分为异地商家交换农户户籍资料所致,商家垫付阶段较普遍。
5.5
步骤5.5:
冒用去世人员户籍虚构销售套取补贴审查
步骤分析:
通过ASL程序代码调用用户自定义SQL数据库【库名:
JDXX】,[调用SQL自定义函数](函数名:
Get_Chinese),检查冒用去世人员户籍虚构销售套取补贴情况,生成“冒用去世人员户籍虚构销售套取补贴明细表”。
这是一种性质较为严重问题,应予重点关注。
反映出了当前我国农村信用缺失的问题比较突出,一些商家越过了社会道德底线,主要是农村户籍来之不拒的情况时有发生,也反映出各地户籍管理存在薄弱环节。
延伸调查时,应分为主观故意和非主观区别对待。
5.6
步骤5.6:
直接利用非农户籍套取补贴审查
步骤分析:
通过ASL程序代码调用用户自定义SQL数据库【库名:
JDXX】,检查直接利用非农户籍套取补贴情况,生成“直接利用非农户籍套取补贴明细表”。
按照全国家电下乡补贴信息系统设计要求,此类情况是不可出现的,但家电下乡补贴只针对农户,非农户是不能享受的。
本步骤目的:
检查是否存在设计漏洞。
经检查,确实存在普遍违规情况。
经研究发现,这与我国现存的户籍登记管理多样性有关,如:
行政区划的变更频繁等,都是产生此类问题的原因。
5.7
步骤5.7:
利用村干部户籍(每户单品2台以上)套取补贴审查
步骤分析:
通过ASL程序代码调用用户自定义SQL数据库【库名:
JDXX】,[调用SQL自定义函数](函数名:
ID18TO15),一方面重点检查利用村干部户籍(每户单品2台以上)套取补贴情况,另一方面重点检查有无村干部兼家电下乡店老板监守自盗,或与商家联手造假套取等问题。
5.8
步骤5.8:
利用城镇低保户籍虚构销售套取补贴审查
步骤分析:
通过ASL程序代码调用用户自定义SQL数据库【库名:
JDXX】,[调用SQL自定义函数](函数名:
ID18TO15),检查利用城镇低保户籍虚构销售套取补贴情况。
理由:
在购买出现基本饱和的情况下,一些尚未购买也没有购买能力的户籍资料成为商家变通处理的对象,其中就包含城镇低保户籍资料。
5.9
步骤5.9:
利用农村低保户籍虚构销售套取补贴
步骤分析:
通过ASL程序代码调用用户自定义SQL数据库【库名:
JDXX】,[调用SQL自定义函数](函数名:
ID18TO15),检查利用农村低保户籍虚构销售套取补贴情况。
理由:
在购买出现基本饱和的情况下,一些尚未购买也没有购买能力的户籍资料成为商家变通处理的对象,其中就包含农村低保户籍资料。
经查验,这种情况在整个家电下乡补贴兑付过程中普遍存在。
5.10
步骤5.10:
利用农村分散五保户籍虚构销售套取补贴审查
步骤分析:
通过ASL程序代码调用用户自定义SQL数据库【库名:
JDXX】,[调用SQL自定义函数](函数名:
ID18TO15),检查利用农村分散五保户籍虚构销售套取补贴情况。
理由:
在购买出现基本饱和的情况下,一些尚未购买也没有购买能力的户籍资料成为商家变通处理的对象,其中就包含分散五保户户籍资料。
经查验,这种情况在整个家电下乡补贴兑付过程中也普遍存在。
5.11
步骤5.11:
利用农村集中供养五保户籍虚构销售套取补贴审查
步骤分析:
通过ASL程序代码调用用户自定义SQL数据库【库名:
JDXX】,[调用SQL自定义函数](函数名:
ID18TO15),检查利用农村集中供养五保户籍虚构销售套取补贴情况。
理由:
在购买出现基本饱和的情况下,一些尚未购买也没有购买能力的户籍资料成为商家变通处理的对象,其中就包含集中供养五保户籍资料。
经查验,这种情况在整个家电下乡补贴兑付过程中也普遍存在。
5.12
步骤5.12:
冒用单身户籍虚构销售套取补贴审查
步骤分析:
通过ASL程序代码调用用户自定义SQL数据库【库名:
JDXX】,检查冒用单身户籍虚构销售套取补贴情况。
经查验,部分商家认为冒用单身户籍的“风险”比较小。
体现了一种审计新思路。
6
步骤6:
▲制作审计疑点汇总报表
6.1
步骤6.1:
创建审计疑点汇总中间表
步骤分析:
通过ASL程序代码调用用户自定义SQL数据库【库名:
JDXX】,配合使用[SQLFORXMLPATH语句],创建审计疑点汇总中间表。
理由:
审计疑点汇总是一门科学,但过去常常被忽略,大数据审计过程中,这种客观需求越来越多。
将不同形式的违规属性以逗号隔开、去除重复、横排一行显示,方便了后期核查。
也可直接据此延伸调查依据。
6.2
步骤6.2:
审计疑点记录汇总统计
步骤分析:
通过ASL程序代码调用用户自定义SQL数据库【库名:
JDXX】,配合使用[SQL游标],便于从总体上评估和把握审计结果。
6.3
步骤6.3:
按产品类型分组汇总审计疑点
步骤分析:
通过ASL程序代码调用用户自定义SQL数据库【库名:
JDXX】,配合使用[SQL动态交叉表]方法。
实现数据透视功能,展现逐步汇总审计疑点的方法。
6.4
步骤6.4:
按受理部门分组汇总审计疑点
步骤分析:
通过ASL程序代码调用用户自定义SQL数据库【库名:
JDXX】,配合使用[SQL动态交叉表]方法。
实现数据透视功能,展现逐步汇总审计疑点的方法。
6.5
步骤6.5:
按销售网点和产品类型分组汇总审计疑点
步骤分析:
通过ASL程序代码调用用户自定义SQL数据库【库名:
JDXX】,配合使用[SQL动态交叉表]方法。
实现数据透视功能,展现逐步汇总审计疑点的方法。
6.6
步骤6.6:
审计疑点分层汇总统计
步骤分析:
通过ASL程序代码调用用户自定义SQL数据库【库名:
JDXX】,配合使用[SQLCASEWHEN语句]方法,从总体上把握审计疑点分布状况,借以进一步确定延伸调查的范围和方式方法。
同时,结束调用用户自定义SQL数据库,恢复开始调用前的[master]状态。
7
步骤7:
▲决策延伸调查作出审计结论
步骤分析:
本步骤没有实质性审查程序运行,只有提示结束窗口。
八、方法语言
步骤
内容
1.1
//步骤1:
数据完整性检测
//步骤1.1:
全部基础表及其记录数量检测[SQL游标]
varSqlStr1;SqlStr2;SqlStr3;SqlStr4;//定义变量
begin
SqlStr1:
='use[JDXX]';
ExecuteUpdate(SqlStr1);//ASL调用用户自定义SQL数据库
//引用sysobjects以及SQL游标检索基础表记录数量核对一致
SqlStr2:
='createtable[JDXX]..tmp(Recordcountint,tableNamevarchar(500))
+'declare@tablenamevarchar(500)'
+'declare@sqlvarchar(500)'
+'declare@strvarchar(500)'
+'declaretablecursorcursorfor'
+'selectnamefrom[JDXX]..sysobjectswherextype=N''u'''
+'opentablecursor'
+'fetchnextfromtablecursorinto@tablename'
+'while@@fetch_status=0'
+'begin'
+'set@str=@tablename'
+'set@sql=''insertinto[JDXX]..tmp(recordcount,tablename)selectcount(*),''+''''''''+@tablename+''''''''+''from[JDXX]..''+@tablename'
+'exec(@sql)'
+'fetchnextfromtablecursorinto@tablename'
+'end'
+'closetablecursor'
+'deallocatetablecursor';
write(SqlStr2);//输出SQL游标语句块
ExecuteUpdate(SqlStr2);//SQL游标方法分别统计当前数据库实例所有表[数据库记录总条数]
SqlStr3:
='SELECTrecordcountas记录数量,tablenameas表名称FROM[JDXX]..tmpwheretablename<>''tmp''';
CreateTempTable('B基础表及其记录数量检测结果表',SqlStr3);//创建临时表
AddTable('B基础表及其记录数量检测结果表');//创建记录数量检测结果表
SqlStr4:
='droptable[JDXX]..tmp';
ExecuteUpdate(SqlStr4);//删除临时表
end.
1.2
//步骤1.2:
主表按受理部门总销量和总补贴金额分组检测[SQL动态列转行]
varSqlStr1;SqlStr2;SqlStr3;SqlStr4;//定义变量
begin
SqlStr1:
='use[JDXX]';
ExecuteUpdate(SqlStr1);//ASL代码调用用户自定义SQL数据库实例
ExecuteUpdate('deletefrom[JDXX]..家电下乡补贴明细表where补贴状态<>''是''');//删除主表中的冗余数据,以简化运算.
ExecuteUpdat