• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

批量将一个库里的所有表里的char改成nc_sqlserver

sqlserver 搞代码 3年前 (2018-06-16) 64次浏览 已收录 0个评论

/*–将所有的表中,数值类型由char,varchar改为nchar,nvarchar 的存储过程–*/  
 
/*–调用示例:  
           exec  p_set  
–*/  
if  exists  (select  *  from  dbo.sysobjects  where  id  =  object_id(N'[dbo].[p_set]’)  and  OBJECTPROPERTY(id,  N’IsProcedure’)  =  1)  

http://www.gaodaima.com/35844.html批量将一个库里的所有表里的char改成nc_sqlserver

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  

欢迎大家阅读《批量将一个库里的所有表里的char改成nc_sqlserver,跪求各位点评,若觉得好的话请收藏本文,by 搞代码


喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址