惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Forbes - Security
Forbes - Security
A
Arctic Wolf
M
MIT News - Artificial intelligence
T
Threat Research - Cisco Blogs
T
The Exploit Database - CXSecurity.com
C
CERT Recently Published Vulnerability Notes
NISL@THU
NISL@THU
L
Lohrmann on Cybersecurity
Martin Fowler
Martin Fowler
A
About on SuperTechFans
P
Palo Alto Networks Blog
Project Zero
Project Zero
The GitHub Blog
The GitHub Blog
WordPress大学
WordPress大学
Blog — PlanetScale
Blog — PlanetScale
博客园_首页
大猫的无限游戏
大猫的无限游戏
Cisco Talos Blog
Cisco Talos Blog
P
Proofpoint News Feed
D
DataBreaches.Net
Cyberwarzone
Cyberwarzone
T
Tor Project blog
IT之家
IT之家
P
Proofpoint News Feed
Help Net Security
Help Net Security
S
Securelist
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
C
CXSECURITY Database RSS Feed - CXSecurity.com
Microsoft Azure Blog
Microsoft Azure Blog
V2EX - 技术
V2EX - 技术
K
Kaspersky official blog
Hugging Face - Blog
Hugging Face - Blog
MongoDB | Blog
MongoDB | Blog
B
Blog
N
News and Events Feed by Topic
The Cloudflare Blog
S
Schneier on Security
P
Privacy & Cybersecurity Law Blog
T
The Blog of Author Tim Ferriss
Recorded Future
Recorded Future
Last Week in AI
Last Week in AI
The Last Watchdog
The Last Watchdog
Hacker News - Newest:
Hacker News - Newest: "LLM"
L
LangChain Blog
I
InfoQ
F
Full Disclosure
The Register - Security
The Register - Security
阮一峰的网络日志
阮一峰的网络日志
H
Hacker News: Front Page
V
V2EX

博客园 - 旭日东生

微软项目开发团队每个角色的一天是如何度过的【转】 如何对软件项目团队成员进行角色和岗位的划分【转】 C# 委托的妙文【转】 NHibernate初体验[转] 配置NHibernate有三种常见的配置方法[转] - 旭日东生 - 博客园 软件系统与管理工作的执行、监督问题 面向对象设计的一些个人认知阶段性总结 代码编码规则检查工具Microsoft StyleCop 4.2 [转]为什么用例不是“功能”? ms-sql递归调用 有关数据完整性的教训和转一篇文章 转《马云和爱迪生:究竟谁“欺骗了世界”》以及我的个人想法 转而告之:马云给雅虎员工作的精彩演讲:爱迪生欺骗了世界! 哈佛管理论丛:谁背上了令人讨厌的猴子 有关UP(unified process)的疑问和胡思乱想 关于《敏捷软件开发:原则、模式与实践(C#版)》 功能自动化测试工具列表大全【转】 企业内部实现软件测试自动化的方案探讨 一些有用Transat-SQL技巧 [持续更新中]
更新数据库所有表的某一个指定字段
旭日东生 · 2008-07-11 · via 博客园 - 旭日东生

在某些情况下,需要更新数据库所有具有某一个特定字段的表,例如:把集团公司某个系统中本来属于A子公司的数据全部更新为属于B子公司的,如果手工一个表一个表进行更改,首先浪费时间,机械化重复,另外,如果对系统数据库结构不熟悉,还要一个一个表查找、检查是否有该字段,其实蛮麻烦的。
最近刚好我有这样的需求,于是,做了一个通用的存储过程来解决这样的问题。

该存储过程用到的数据库基本知识点有:
1 如何查找数据库中所有的表
2 如何查找表的所有字段
3 如何执行字符串连接起来的SQL语句(执行动态SQL语句)
4 执行动态SQL语句并返回值
5 动态游标


create procedure sp_fix_update_tables_appoint_column
 @column_name nvarchar(100), -- 制定需要更新的字段名
 @value_to_reaplace varchar(255), -- 如果是某值得情况下才更新
 @value_new varchar(255), -- 新的赋值
 @table_not_inclue varchar(255) -- 排除在外的不进行更新的表 (某些情况下,特定的表可能不需要更新)
as
if ltrim(rtrim(@table_not_inclue))=''
 set @table_not_inclue=''''''
else
 set @table_not_inclue='''' + replace(@table_not_inclue,',',''',''') + ''''

declare @table_name as nvarchar(255)
declare @sql_cur as varchar(2000)
 set @sql_cur='declare cur_tables cursor for
  select name from sysobjects where xtype=''U'' and name not in (' + @table_not_inclue + ')'
exec (@sql_cur)
open cur_tables
fetch next from cur_tables into @table_name
while @@fetch_status=0
begin

 declare @column_count as int
 declare @sql_find_column as nvarchar(1000)
 set @sql_find_column=N'SELECT @column_count=count(dbo.syscolumns.name)
  FROM dbo.syscolumns INNER JOIN
  dbo.sysobjects ON dbo.syscolumns.id = dbo.sysobjects.id
  WHERE dbo.sysobjects.name=''' + @table_name + ''''
  + ' and  dbo.syscolumns.name =''' + @column_name + ''''
  + ' and (dbo.sysobjects.xtype = ''u'') AND (NOT (dbo.sysobjects.name LIKE ''dtproperties''))'
 
 exec sp_executesql @sql_find_column,N'@table_name varchar(233),@column_name varchar(100),@column_count int output'
  ,@table_name,@column_name,@column_count output
 
 if(@column_count=1)
 begin
  print @table_name
  declare @sql_update as varchar(1000)
  set @sql_update='update ' + @table_name + ' set ' + @column_name + '=''' + @value_new + ''' where '
   + @column_name + '=''' + @value_to_reaplace + ''''
  exec (@sql_update)
 end
 fetch next from cur_tables into @table_name
end
close cur_tables
deallocate cur_tables