mysql用户名定义格式_修改用户定义的数据类型

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

f68f2add0b68e4f9810432fce46917b7.png

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值