DECLARE hCForEach CURSOR GLOBAL
FOR
SELECT --前面部分是更新表中数据NULL的为0
N'UPDATE '+QUOTENAME(o.name)
+N' SET '+QUOTENAME(c.name)
+N'=0 WHERE '+QUOTENAME(c.name)
+N' IS NULL
--设置默认值处理
ALTER TABLE '+QUOTENAME(o.name)
+N' ADD DEFAULT 0 FOR '+QUOTENAME(c.name)
FROM sysobjects o,syscolumns c,systypes t
WHERE o.id=c.id
AND OBJECTPROPERTY(o.id,N'IsUserTable')=1
AND c.xusertype=t.xusertype
AND(t.name IN(N'decimal','numeric','real','float')
OR t.name LIKE '%money'
OR t.name LIKE '%int')
AND c.status<>0x80 --标识列(IDENTITY)不能设置
AND NOT EXISTS( --已经设置了默认值的不再设置
SELECT * FROM syscomments
WHERE id=c.cdefault)
EXEC sp_MSforeach_Worker @command1=N'?'
还没有评论,来说两句吧...