ifexists (select*from dbo.sysobjects where id =object_id(N'[dbo].[p_set]') andOBJECTPROPERTY(id, N'IsProcedure') =1) dropprocedure[dbo].[p_set] GO /**//*--将所有的表中,数值类型由char,varchar改为nchar,nvarchar --*/ /**//*--调用示例: exec p_set --*/ --修改的存储过程 createprocedure p_set as declare tb cursorfor SELECT sql='alter table ['+d.name +'] alter column ['+a.name+'] n' +b.name+'('+cast(a.length*2asvarchar)+')' FROM syscolumns a leftjoin systypes b on a.xtype=b.xusertype innerjoin sysobjects d on a.id=d.id and d.xtype='U'and d.name<>'dtproperties' where b.name in('char','varchar') and notexists(SELECT1FROM 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 ))) --主键不能修改 orderby d.name,a.name declare@sqlvarchar(1000) open tb fetchnextfrom tb into@sql while@@fetch_status=0 begin exec(@sql) fetchnextfrom tb into@sql end close tb deallocate tb go
欢迎转载,转载请注明出处:http://www.cnblogs.com/Tonyyang/
posted on
2008-05-29 09:30Tonyyang
阅读(1210)
评论(0)
编辑收藏举报