日期:2014-05-17  浏览次数:20577 次

批量删除每个数据库中 某表的某列
现象:多个数据库中存在表code,且此表中存在列 ccode
实现:或者叫做“自动”打开每个数据进行: alter table code drop column ccode 的操作

------解决方案--------------------
declare @sql nvarchar(4000);

set @sql = ''

select @sql= @sql+'use '+name+'; if object_id(''code'') is not null alter table code drop column ccode;'
from sys.databases
where name not in ('master','tempdb','model','msdb')
 

exec(@sql)

------解决方案--------------------
引用:
按照你的方法实现了要求 ;我在请教一下:
为什么不加这一步(set @sql = '')就不行啊  
这一步起到什么作用啊,请指教
初始化,如果没有这一步,sqlserver不知道@sql这个变量是什么,
------解决方案--------------------
验证一下:任何值和null进行运行,都会返回null值
declare @sql nvarchar(4000);
 

select @sql,@sql + '5'
/*
(无列名) (无列名)
NULL NULL
*/

------解决方案--------------------
引用:
哦,sql挺奇怪的,就这样了。还有更详细的解释吗,谢谢
即使在C#等编程语言里面,初始化也是一个好习惯,能避免很多不必要的问题