不动产项目中利用sql server批量来刷属性 ——字典

    在做不动产项目中,业务系统数据中很多字段的值都是中文的,我们要根据对应的字典来把中文刷成代码。比如业务系统数据中权利类型是 国有建设用地使用权 ,我们需要根据字典将其换成3 。QLLX这个字段在多个表中都存在,比如FDCQ2,QLR,JSYDSYQ等,如果按照之前的做法是根据字典做对照表。利用 update * set= from FDCQ2 A, DZB B WHERE A.ID=B.ID 我不想每个表都update一遍。刚好了解到sql server 中每个数据中 的视图--系统视图中都有两个视图,第一个视图存储了所有表的所有字段,每个字段都有一个对应id,第二个视图存储了所有表的名字。诸位看官只要打开看下就明白了。于是准备利用存储过程来批量弄某个字段。首先创建一个视图,来把所有的字段存储起来。

create view dbo.ctname
as
SELECT a.name as cname,b.name as bname  FROM [xx导出数据].[sys].[all_columns] a , [xx导出数据].[sys].[all_objects] b where a.object_id=b.object_id and b.type='U' and b.object_id>0

然后建立存储过程,批量更新所有含有QLLX 字段的表。如下图代码所示:

go
declare @temp varchar(60)
declare  tempcursor cursor for select bname from dbo.ctname where cname='qllx'
open tempcursor
fetch next from tempcursor into @temp
WHILE(@@FETCH_STATUS=0)
begin
exec('update [xx导出数据].[dbo].['+@temp+'] set QLLX=b.代码 from [xx导出数据].[dbo].['+@temp+'] a,对照表.dbo.[权利类型字典表]b where cast(a.QLLX as nvarchar)=b.权利类型 ')
fetch next from tempcursor into @temp
end
print 'qllx'
close tempcursor
DEALLOCATE tempcursor

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值