|
| |
名片设计 CorelDRAW Illustrator AuotoCAD Painter 其他软件 Photoshop Fireworks Flash |
|
--SQLSERVER的自定义类型比较好用吧,但是,一旦引用该数据类型后,想修改数据类型,就是一大头疼的事了,本存储过程就是专门对付它的。 --sp_rebuildallview 见本BLOG中的其它页面 create procedure sp_rechangfieldtype(@typename varchar(50), @newtype varchar(50)) as begin declare @typeid int declare @tablename varchar(50) declare @column varchar(50) declare @sqlstr varchar(200) declare @defaultid int select @typeid = xusertype from systypes where name = @typename and xusertype > 256 AND (is_member(\\\'db_owner\\\') = 1 OR is_member(\\\'db_ddladmin\\\') = 1 OR is_member(user_name(uid))=1) declare mycursor cursor for select o.name, c.name, c.cdefault from syscolumns c, systypes t, sysusers u, sysobjects o where c.xusertype = @typeid and t.xusertype = @typeid and o.uid = u.uid and c.id = o.id and o.type = \\\'u\\\' open mycursor fetch next from mycursor into @tablename, @column, @defaultid while @@fetch_status = 0 begin if @defaultid <> 0 begin set @sqlstr = \\\'alter table \\\' + @tablename + \\\' drop \\\' + object_name(@defaultid) exec(@sqlstr) set @sqlstr = \\\'alter table \\\' + @tablename + \\\' alter column \\\' + @column + \\\' \\\' + @newtype exec(@sqlstr) -- set @sqlstr = \\\'alter table \\\' + @tablename + \\\' add contraint \\\' + @tablename + \\\'df\\\'+@column + \\\' default 0\\\' end else begin set @sqlstr = \\\'alter table \\\' + @tablename + \\\' alter column \\\' + @column + \\\' \\\' + @newtype print @sqlstr exec(@sqlstr) end --if @@error <> 0 -- continue fetch next from mycursor into @tablename, @column, @defaultid end --假如没有约束,则可以直接删除。假如有约束。先处理约束。 close mycursor deallocate mycursor end GO create procedure SP_CHANGEFIELD(@OLDTYPENAME VARCHAR(50), @NEWDTYPE VARCHAR(50)) as begin exec(\\\'sp_addtype U_LOCALTYPE, \\\'\\\'\\\' + @newdtype + \\\'\\\'\\\'\\\') exec SP_rechangfieldtype @OLDTYPENAME, \\\'U_LOCALTYPE\\\' EXEC sp_rebuildallview EXEC(\\\'sp_droptype \\\' + @OLDTYPENAME) EXEC(\\\'sp_addtype \\\' + @OLDTYPENAME + \\\', \\\'\\\'\\\' + @newdtype + \\\'\\\'\\\'\\\') exec SP_rechangfieldtype \\\'U_LOCALTYPE\\\', @OLDTYPENAME EXEC sp_rebuildallview EXEC sp_droptype \\\'U_LOCALTYPE\\\' end GO --以下是示例。将U_HELLO的长度改为 30 SP_ADDTYPE U_HELLO, \\\'VARCHAR(10)\\\' GO CREATE TABLE TESTTYPE(NAME U_HELLO) GO SP_CHANGEFIELD \\\'U_HELLO\\\', \\\'VARCHAR(30)\\\' 返回类别: 教程 上一教程: MICROSOFT SQL SERVER 2005 的 XML 最佳实施策略 下一教程: 如何在SQL SERVER中恢复数据 您可以阅读与"修改用户定义的数据类型"相关的教程: · 修改用户定义的数据类型 · 用户自定义的数据库修复 · 用户自定义的数据库修复 · 修改自定义数据类型精度 · SQL SERVER2000中用户自定义数据类型的使用 |
| 快精灵印艺坊 版权所有 |
首页 |
||