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