位置: 编程技术 - 正文

SQL Server中修改“用户自定义表类型”问题的分析与方法(sql server 修改)

编辑:rootadmin

推荐整理分享SQL Server中修改“用户自定义表类型”问题的分析与方法(sql server 修改),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:sql server中修改索引的语句,sql server中修改语句,sql server中修改数据,sql server中修改字段类型,sql server中修改列名称SQL语句,sql server中修改字段类型,sql server中修改字段类型,sql server中修改字段类型,内容如对您有帮助,希望把文章链接给更多的朋友!

前言

SQL Server开发过程中,为了传入数据集类型的变量(比如接受C#中的DataTable类型变量),需要定义“用户自定义表类型”,通过“用户自定义表类型”可以接收二维数据集作为参数,在需要修改“用户自定义表类型”的时候,增加字段,删除字段,修改字段类型等,它没有像表一样的alter table语法来进行修改。

只能通过删除重建来实现,但是在删除“用户自定义表类型”的时候会提示有对象引用它(某些存储过程用到了这个“用户自定义表类型”),因此无法删除。

为了达到公用的目的,有时候一个TableType可以在多个地方分别被引用到,这样的话,势必要先删除所有的引用了这个“用户自定义表类型”的对象(存储过程等)

如果这个“用户自定义表类型”被多个存储过程引用,那么就要分别删除多个引用了“用户自定义表类型”的存储过程,然后修改“用户自定义表类型”,在重建存储过程,这样做起来似乎有点绕,这个问题可以用过EXEC sys.sp_refreshsqlmodule这个系统函数来简介实现“用户自定义表类型”的定义

TableType的基本使用

如下创建一个用户自定义表类型

定义的TableType可以在用户自定义表类型中找到

创建两个存储过程,分别用到了上面定义的用户自定义表类型,模拟用户自定义表类型被引用的情况

此时的存储过程可以接收TableType参数并正常运行

TableType的修改

TableType类型不支持alter语法,也即无法直接修改TableType的定义

SQL Server中修改“用户自定义表类型”问题的分析与方法(sql server 修改)

那么只能通过删除TableType的方法来重建这个TableType,当删除的时候,仍然报错,提示“因为它正由对象 '***' 引用。可能还有其他对象在引用此类型。”

此时只能删除引用了这个TableType的对象来解决,下面可以查到那些对象引用了某一个TableType,然后分别删除,重建TableType,再重建存储过程,有点绕弯子。

可以先将自定义的某个TableType重命名,重命名的过程中有一个警告,这里先忽略它,随后可以直接Drop Type dbo.MyTableType

删除原TableType之后,重建(重定义)TableType

重建TableType之后,先前存储过程中用到这个TableType的存储过程是无法编译通过的

此时就需要重新刷新引用对象的定义

刷新完成之后,原存储过程就可以正常编译了

最后删除原始的TableType被重命名的TableType(被第一步重名的那个)

这样子,整个过程就无需因为修改TableType的定义而删除引用了TableType的对象了,在修改了TableType的定义之后,引用了这个TableType的对象可以正常运行,也可以根据修改之后的TableType做具体的使用

完整的脚本如下

总结:

TableType可以方便地接受二维数据作为参数,从而可以达到批量处理数据的目的,避免传递进去一大堆字符串,然后在对字符串解析的做法,从而可以在一定程度上提高sql的运行效率。

不过TableType的修改确实存在一定的问题,直接修改TableType会存在级联删除数据库对象的情况,可以通过“曲线救国”的方式,来减小工作量的情况下修改TableType。

好了,

标签: sql server 修改

本文链接地址:https://www.jiuchutong.com/biancheng/347089.html 转载请保留说明!

上一篇:详解SQL Server数据库状态和文件状态(sql server 数据库介绍)

下一篇:关于SQL Server中bit类型字段增删查改的一些事(在sql server中关于数据库的说法正确的是)

  • 餐饮发票不是增值发票吗
  • 适用增值税零税率的有
  • 维修费税率是13的话归口什么类别
  • 调减加计抵减额会计分录
  • 股东退股退本金及利润
  • 退回资本金要交税吗
  • 500元以下免税发票有哪些
  • 纳税人如何办理纳税申报流程
  • 进口增值税的计税价格为
  • 不是单位职工个税怎么算
  • 出口货物免税的税种包括
  • 农产品增值税核定扣除计算
  • 一次性医保补助多少钱
  • 出口货物退税率查询
  • 股东变更没有公章和营业执照怎么办
  • 认证过的进项税怎么记账
  • 公司认缴增资需要什么流程呢
  • 收到其他公司的捐赠收入怎么处理
  • 开业庆典礼仪费计入什么科目?
  • 增值税发票和电子发票都可以报销吗
  • 小规模需要交所得税吗
  • 小规模纳税人缴纳增值税的会计科目
  • 2020年运费发票备注栏新规定
  • 装修费怎么摊销,租期两年
  • 仓库折旧费
  • 其他债权投资的交易费用计入什么科目
  • 苹果微信朋友圈怎么发文字不带图片
  • nginx不支持ipv6
  • iphone助手
  • PHP:Memcached::getServerByKey()的用法_Memcached类
  • PHP:oci_field_precision()的用法_Oracle函数
  • 大金中央空调面板图解
  • 工会捐款计入什么科目
  • php 随机数
  • CUDA(10.2)+PyTorch安装加配置 详细完整教程
  • 社保包括哪些保险及比例
  • Navicat for MySQL 15 v15.0.27 中文企业正式版(附安装教程) 32/64位 破解版
  • 收押金退押金会计分录
  • 管理费用抵消分录
  • 事业单位财政拨款收入会计分录
  • 无法收到的租金要交房产税吗
  • 陈列费属于什么类目的
  • 企业无票支出该怎么做账
  • 净资产包含哪些项目
  • 折扣折让的会计分录
  • 暂估入账的固定资产,待办理竣工决算手续后
  • mongodb查询操作
  • 分公司注销一般要多久
  • 纳税人销售货物
  • 公司注销前的发票怎么查
  • 应付账款入账金额可以包括哪些内容?
  • 税控盘减免税款月末不用交税还要结转吗
  • 收到银行承兑汇票后,如何取钱
  • 工程投标保证金什么时候交
  • 建筑行业跨期收益怎么算
  • 班车租赁服务
  • 小企业建账选哪种会计制度
  • sql2008开启远程连接
  • win7系统如何打开
  • ubuntu /opt
  • centos7 pptp搭建
  • freebsd软件包存储库
  • 在windows中如何设置行间距
  • 人脉系统
  • win8系统怎么设置密码登陆
  • wrme.exe是什么
  • kwconfig.exe
  • 系统导航栏已禁用怎么办
  • win10系统无法运行exe文件
  • windows7凭据管理器
  • win8.1使用教程
  • cmd的tree指令
  • shell截取字段
  • 浏览器窗口上线怎么办
  • 深入学习习总书记系列讲话精神
  • 北京朝阳地税大厅电话
  • 国家税务处处长
  • 自然人扣缴端重置密码操作流程
  • 小汽车碰撞游戏视频
  • 银元面值有哪些种类
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设