数据类型varchar修改为nvarchar
--- 使用哪个数据库
USE [xxxx]
DECLARE @name nvarchar(100)
DECLARE @fieldName nvarchar(100)
DECLARE @fieldType nvarchar(100)
DECLARE @leng nvarchar(50)
DECLARE @nums int
SET @nums=0
DECLARE CURSOR1 CURSOR SCROLL for (SELECT name FROM sysobjects WHERE xtype = 'U' AND name LIKE 'egd_%') ---U 表 V 视图 P 函数
OPEN CURSOR1
FETCH FIRST FROM CURSOR1 INTO @name
WHILE (@@FETCH_STATUS=0)
BEGIN
DECLARE CURSOR2 CURSOR SCROLL for (
SELECT syscolumns.name as fieldName, systypes.name as fieldType, syscolumns.length as leng
FROM syscolumns INNER JOIN systypes ON systypes.xtype = syscolumns.xtype
WHERE id = (SELECT id FROM sysobjects WHERE name = @name)
AND systypes.name = 'varchar'
) ---要查询的类型
OPEN CURSOR2
FETCH FIRST FROM CURSOR2 INTO @fieldName,@fieldType,@leng
WHILE (@@FETCH_STATUS=0)
BEGIN
BEGIN try
SET @nums = @nums+1
--PRINT ('alter table '+@name+' alter column '+@fieldName+' nvarchar('+@leng+')')
EXECUTE('alter table '+@name+' alter column '+@fieldName+' nvarchar('+@leng+')')
SET @nums = @nums+1
END try
BEGIN catch
PRINT (@NAME+' '+@fieldName+' '+@fieldType+' '+@leng)
SET @nums=@nums+1
FETCH NEXT FROM CURSOR2 INTO @fieldName,@fieldType,@leng
END catch
FETCH NEXT FROM CURSOR2 INTO @fieldName, @fieldType, @leng
END
close CURSOR2
deallocate CURSOR2
FETCH NEXT FROM CURSOR1 INTO @name
END
close CURSOR1
deallocate CURSOR1
print @nums