最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

修改用户定义的数据类型

来源:动视网 责编:小采 时间:2020-11-09 08:17:18
文档

修改用户定义的数据类型

修改用户定义的数据类型:--SQLSERVER的自定义类型比较好用吧,但是,一旦引用该数据类型后,想修改数据类型,就是一大头疼的事了,本存储过程就是专门对付它的。 --sp_rebuildallview 见本BLOG中的其它页面 create procedure sp_rechangfieldtype(@typena
推荐度:
导读修改用户定义的数据类型:--SQLSERVER的自定义类型比较好用吧,但是,一旦引用该数据类型后,想修改数据类型,就是一大头疼的事了,本存储过程就是专门对付它的。 --sp_rebuildallview 见本BLOG中的其它页面 create procedure sp_rechangfieldtype(@typena


--SQLSERVER的自定义类型比较好用吧,但是,一旦引用该数据类型后,想修改数据类型,就是一大头疼的事了,本存储过程就是专门对付它的。 --sp_rebuildallview 见本BLOG中的其它页面 create procedure sp_rechangfieldtype(@typename varchar(50), @newtype v

--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)'

文档

修改用户定义的数据类型

修改用户定义的数据类型:--SQLSERVER的自定义类型比较好用吧,但是,一旦引用该数据类型后,想修改数据类型,就是一大头疼的事了,本存储过程就是专门对付它的。 --sp_rebuildallview 见本BLOG中的其它页面 create procedure sp_rechangfieldtype(@typena
推荐度:
标签: 修改 用户 数据
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top