SQL Server 批量转换指定字段类型为另一种类型存储过程:
CREATE PROCEDURE convertFieldType AS
DECLARE tb CURSOR FOR SELECT
SQL = 'alter table [' + d.name + '] alter column [' + a.name + '] 目标类型'
FROM
syscolumns a
LEFT JOIN systypes b ON a.xtype = b.xusertype
INNER JOIN sysobjects d ON a.id = d.id
AND d.xtype = 'U'
AND d.name <> 'dtproperties'
WHERE
b.name IN ('原类型')
AND NOT EXISTS (
SELECT
1
FROM
sysobjects
WHERE
xtype = 'PK'
AND name IN (
SELECT
name
FROM
sysindexes
WHERE
indid IN (
SELECT
indid
FROM
sysindexkeys
WHERE
id = a.id
AND colid = a.colid
)
)
)
ORDER BY
d.name,
a.name
DECLARE @SQL VARCHAR (1000) OPEN tb FETCH NEXT
FROM
tb INTO @SQL
WHILE @@fetch_status = 0
BEGIN
EXEC (@SQL) FETCH NEXT
FROM
tb INTO @SQL
END CLOSE tb DEALLOCATE tb