游标批量汉化表的方法,本文主要内容关键词为:游标论文,批量论文,汉化论文,方法论文,此文献不代表本站观点,内容供学术参考,文章仅供参考阅读下载。
在MS SQLSERVER数据库中,游标能从包括多条数据记录的结果集中每次提取一条记录,也能使应用程序对查询语select返回的行结果集中每一行进行批量操作。合理运用数据库内置系统表、存储过程及游标对被审计单位数据库结构进行批量汉化,能快速提高审计人员对原始数据库的理解,从而提高审计分析速度。本文以某一业务数据库为例,介绍利用游标对表进行批量汉化的方法。 步骤一:分析被审计单位有效用户表。审计人员取得被审计单位原始数据库后,利用系统表sysobjects、sysindexes、syscolumns及行数字段rowcnt取得有效用户表原始表名及列名,查询语句如下: USE PLHH select o.name as原始表名,c.name as原始列名from sysobjects o join sysindexes i on o.id=i.id and xtype='u' join syscolumnsc on c.id=o.id and i.rowcnt>0 order by 1 查询结果: 原数据库部分表结构如下: 步骤二:获取被审计单位数据库对应数据字典表。采集被审计单位数据库时,原数据库中如果没有数据字典表,审计人员应主动与被审计单位沟通取得数据字典表。 本例子数据字典表如下:select*from FEILDMANGER order by 1 步骤三:运用双层游标及系统内置存储过程,对照数据字典表对原始表结构进行批量汉化。在双层游标中调用sp_rename存储过程批量汉化表名及列名,游标具体如下。 declare cl cursor for 定义存放原始表名的游标: select o.name as old_tabname from sysobjects o join sysindexesi on o.id=i.id and xtype='u' and i.rowcnt>0 open c1 declare @old_tabname varchar(100) fetch cl into @old_tabname while @@FETCH_STATUS=0 begin if @old tabname in(select distinct TABEL NAME from FEILDMANGER) begin declare @new tabname varchar(100)select distinct @new_tabname=tabs from FEILDMANGER where tabel_name=@old_tabname 批量汉化表名: exec sp_rename@old_tabname,@new tabname declare c2 cursor for 定义存储原始列名的游标: select c.name as old_colname from sysobjects o join syscolumnsc on c.id=o.id and o.name=@new_tabname open c2 declare @old_colname varchar(100) fetch c2 into @old_colname while @@FETCH_STATUS=0 begin if @ old colname in(select field_namefrom FEILDMANGER where tabs=@new_tabname) begin declare@new_colname varchar(100), @replace_colname varchar(100) select@new_colname=FIELDMS from FEILDMANGER where TABS=@new_tabname and FIELD_NAME=@old_colname set@replace_colname=@new tabname+'.'+@old_colname 批量汉化列名: exec sp_rename@replace_colname,@new colname,‘COLUMN’ fetch c2 into@old colname close c2 deallocate c2 fetch c1 into@old_tabname close c1 deallocate c1 运行上述游标后,完成表结构的批量汉化,汉化后的部分表结构如下: 步骤四:查询汉化后的新表结构。 select o.name as新表名,c.name as新列表from sysobjects o join sysindexes i on o.id=i.id and xtype=‘u'join syscolumnsc on c.id=o.id and i.rowcnt>0 order by 1 查询结果如下: 总结:汉化表可有多种方法,比较常用的方式是将原始数据表导出,再按照数据字典表在EXCEL中对每张表表头进行处理后再导入;相比之下,运用游标和存储过程的汉化方式更高效准确地完成了成批表结构的汉化,避免了大容量数据表的反复导入导出;在审计时利用游标对一些复杂的业务数据库(如医院管理系统、社保基金管理系统、住房公积金管理系统等)进行批量汉化,为计算机审计工作奠定了更好的基础。标签:游标论文; select论文; sqlserver游标论文;