某县部门专项资金审计SQL应用案例
一、案例背景
审计组在某县本级财政预算执行审计中对部门专项资金进行审查时发现该县大多数预算单位的会计账对专项资金均没有单独进行核算,而是将多项资金混在一起核算,因此从会计账上很难查清各项资金的收支结余情况,使专项资金的审查工作遇到了很大的困难。为解决问题,审计组决定从财政集中支付系统入手,对各预算单位的资金收付记录进行审查,以揭露一些部门在专项资金管理和使用中存在的滞留缓拨、挤占挪用专项资金等违法违规问题。
该县150多个预算单位的经费均通过财政国库支付中心审核后直接或授权
支付。集中支付系统的前台采用方正春元的财政集中支付系统(区县版V5.80),后台采用数据库Orcal 9i。该系统涵盖了预算指标的形成、分配、调整,用款计划的编制、下达,预算资金的申请、拨付等流程。其后台的数据表有300多个,数据量每年以160多Mb递增。在审计日,备份的数据量为517Mb,仅2009年的流水表就有26000多条记录。
二、审计成果
审计组利用SQL数据库技术对各预算单位的专项资金收付记录进行审查,查出滞留、截留专项资金45.23
万元,挤占、挪用专项资金133.26万元。
三、审计过程
(一)总体审计思路
如以财政集中支付系统的数据来审查部门专项资金,因备份得来的Oracle 后台数据量太大、数据表太多,使用AO系统是没法采集和处理的,只能用SQL 数据库来操作。另外,财政集中支付系统的开发商对该软件的制作技术没有对外
开放,也不配备数据字典,许多表名和字段名意义不明,为此需要对原始数据进行必要的翻译、过滤和整理,生成我们易于理解和查询的中间表,才能进行审查。思路如图1:
(二)数据采集和整理
1. 在本地安装Oracle数据库,建立一个名为MOF的表空间和相应的用户(如bmgkzf);
2. 将财政集中支付系统的备份数据(DMP格式)导入到本地计算机Oracle数据库的上步用户(即bmgkzf)中;
3.在SQL数据库中建立一个数据库,准备接收Oracle数据库的财政集中支付系统数据;
4. 配置一个ODBC数据源,将Oracle数据库上步用户(即bmgkzf)中的表名为book、bookdetail、budget、budgetsection_zhh、budgetsummary、c_plan、
c_ys_item、enterprise、item、moneycontrol、zblx、zbly等12个表导入到SQL数据库中;
(如果财政部门能将财政集中支付系统的数据转换成SQL格式的数据提供给审计组,则以上步骤省略,直接将数据导入到SQL即可)
5.在SQL数据库查询分析器中编写以下语句进行整理,分别生成用款计划表、用款情况表(以下语句整理2009年的数据,如想整理其他年度的数据,请将语句中的‘2009’全部替换为想要整理的年度,如‘2010’等,可以通过编辑菜单中的替换功能来实现):
(1)生成用款计划表
select distinct
计划编号=p_exe_id,
预算编码=b.b_exe_id,
预算单位=a.name,
功能分类=c.name,
项目分类=d.name
预算项目=f.name,
计划额度=(case
数据库应用案例<0 then -b.money
end),
冻结金额=b.used_money,
资金性质=e.name,
支付方式=(case budgetpaytype
when 1 then ‘授权支付’
when 0 then ‘直接支付’
when 2 then ‘实拨支付’  end),用途=g.name,
是否专项=(case b.isintension
when 1 then ‘是’
else ‘否’ end),
文号=b.file_no,
下达日期=b.down_date,
审核=(case b.auditstatus
when -2 then ‘下达’
else ‘未下达’ end),
用途号=b.summary
into 用款计划表_2009
from enterprise a
left join c_plan b
on a.eid=b.eid ar=b.year
left join budgetsection_zhh c
on b.bid=c.bid
left join item d
on b.iid=d.iid ar=d.year
left join moneycontrol e
on b.budgetmoneycontrol=e.mcid ar=e.year  left join c_ys_item f
on b.ysiid=f.ysiid ar=f.year
left join budgetsummary g
on b.summary=g.id ar=g.year
ar=2009
order by 预算单位
(2)生成用款情况表
select distinct
预算单位=c.name,
日期=voudate,
支付申请号=a.bookno,
摘要=a.totalsummary,
支付额度=(case
almoney<0 then -a.totalmoney
almoney end),
收款人=a.receivename,
收款人帐号=a.receiveaccount,
是否支付=(case a.ispayoff
when 1 then ‘是’
else ‘否’ end),
功能分类=bname,

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。