将所有的表中,数值类型由char,varchar改为nchar,nvarchar 的存储过程
2006-01-02 11:12
826 查看
/*--将所有的表中,数值类型由char,varchar改为nchar,nvarchar 的存储过程
--邹建 2004.02(引用请保留此信息)--*/
/*--调用示例:
exec p_set
--*/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_set]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[p_set]
GO
create procedure p_set
as
declare tb cursor for
SELECT sql='alter table ['+d.name
+'] alter column ['+a.name+'] n'
+b.name+'('+cast(a.length*2 as varchar)+')'
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('char','varchar')
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
go
--邹建 2004.02(引用请保留此信息)--*/
/*--调用示例:
exec p_set
--*/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_set]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[p_set]
GO
create procedure p_set
as
declare tb cursor for
SELECT sql='alter table ['+d.name
+'] alter column ['+a.name+'] n'
+b.name+'('+cast(a.length*2 as varchar)+')'
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('char','varchar')
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
go
相关文章推荐
- 答:SQLServer DBA 三十问之一: char、varchar、nvarchar之间的区别(包括用途和空间占用);xml类型查找某个节点的数据有哪些方法,哪个效率高;使用存储 过程和使用T-SQL查询数据有啥不一样;
- 修改所有用户表的字段 , 只替换char varchar nchar nvarchar 类型
- SQL插入语句中有单引号 && SQL中char nchar varchar nvarchar的区别 && Java中字符(串)和数值类型的转换
- SQL中char、varchar 和nchar、nvarchar的区别,另外加一转换存储过程
- SQL学习---将所有的char,varchar改为nchar,nvarchar
- sql server数据类型char和nchar,varchar和nvarchar,text和ntext
- sqlserver数据类型char和nchar,varchar和nvarchar,text和ntext的用法以及区别
- sql server数据类型char和nchar,varchar和nvarchar,text和ntext的区别
- Oracle各种类型的运用|char、varchar、text和nchar、nvarchar、ntext的区别
- SQLServer中的char、varchar、nchar、nvarchar四种类型
- sqlserver数据类型char和nchar,varchar和nvarchar,text和ntext的用法以及区别?
- sql中的字符类型char,varchar,nchar,nvarchar
- SQL Server 2005数据类型char,varchar,text ,nchar,nvarchar,ntext
- sql server数据类型char和nchar,varchar和nvarchar,text和ntext的区别
- DBA30问之CHAR(N),NCHAR(N),VARCHAR(N),NVARCHAR(N)四种类型之间的区别
- sql server数据类型char和nchar,varchar和nvarchar,text和ntext?
- 批量替换数据库中所有用户数据表中字段数据类型为char和varchar到nvarchar的脚本
- 在Oracle中CHAR,NCHAR,VARCHAR,VARCHAR2,NVARCHAR2这五种类型的区别
- sqlserver数据类型char和nchar,varchar和nvarchar,text和ntext的用法以及区别
- SQL2005中char nchar varchar nvarchar数据类型的区别和使用环境讲解