关于自定义数据类型

sikeen 2005-01-12 02:41:54
某个表的某个字段被很多存储过程引用,一旦修改该字段类型,比如说长度,一个个存储过程修改将非常麻烦,而且难免遗漏,因此俺想用自定义类型,需要修改时修改相应的类型就好了,存储过程不动。但自定义类型用多了会不会影响效率????
...全文
117 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
sikeen 2005-01-12
  • 打赏
  • 举报
回复
汗,俺测试了一下,数据表引用了无法删除,存储过程参数里引用了的话无法删除,如果只是内部引用的话倒是不会检查...

不过也没什么,大不了重建存储过程,总比一个一个修改简单的多,效率没什么影响就没问题,嘿嘿嘿嘿~~~~~~
zjcxc 元老 2005-01-12
  • 打赏
  • 举报
回复
效率倒是没什么影响
zjcxc 元老 2005-01-12
  • 打赏
  • 举报
回复
--下面的测试说明了这个问题

--创建自定义数据类型
exec sp_addtype 'aa','int'
go

--创建存储过程并引用它
create proc p_test
@a aa
as
select @a
go

--调用一下,看看是否正常
exec p_test 1
go

-- 不删除存储过程,直接删除自定义数据类型
exec sp_droptype 'aa'

/*--结果:

服务器: 消息 15180,级别 16,状态 1,过程 sp_droptype,行 32
无法除去。该数据类型正在使用。
object
--------------------------------------
p_test P dbo @a aa

(所影响的行数为 1 行)
--*/
go

--清理测试
drop proc p_test
exec sp_droptype 'aa'
sikeen 2005-01-12
  • 打赏
  • 举报
回复
关键是效率问题,会不会比内建类型低...很多...
zjcxc 元老 2005-01-12
  • 打赏
  • 举报
回复
不是这么简单
有对象引用了自定义数据类型的时候,是不允许你删除的,除非你连引用它的对象也一齐删除
sikeen 2005-01-12
  • 打赏
  • 举报
回复
to zjcxc(邹建) ( ) :
对了,俺的意思是数据表的类型还是正常的东西,只是存储过程用自定义类型,到时只需要修改数据表和用户自定义类型。
zjcxc 元老 2005-01-12
  • 打赏
  • 举报
回复
tempdb数据库中每次启动sql服务的时候,根据model数据库自动重建

所以你在model数据库中添加了该类型的话,下次及以后重新启动服务后,tempdb数据库中也自动有这些自定义数据类型
sikeen 2005-01-12
  • 打赏
  • 举报
回复
to zjcxc(邹建) ( ) :
那就删除重新建一个同名的就好了嘛,存储过程应该不用改吧??-_-
sikeen 2005-01-12
  • 打赏
  • 举报
回复
还有,因为有可能用到临时表,那么在model库里加了该类型,是不是tempdb里该类型就不会over了????
zjcxc 元老 2005-01-12
  • 打赏
  • 举报
回复
自定义数据类型不允许修改它的长度,只能删除并按新的长度创建
zjcxc 元老 2005-01-12
  • 打赏
  • 举报
回复
楼主的如意算盘是打不响的了

34,594

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧