位置: 编程技术 - 正文

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中关于数据库的说法正确的是)

  • 怎么证明自己是建档立卡贫困户
  • 分期收款销售的基本业务处理
  • 什么是进项加计扣除
  • 简易计征怎么开票
  • 报表没有其他收入怎么办
  • 企业注销其他应付款可以转入未分配利润吗
  • 所得税季报填错了已经申报了
  • 个税申报收入额怎么填
  • 个体餐饮要交什么税
  • 转让土地使用权属于销售无形资产吗
  • 营改增前未完工的老项目可以开专票吗
  • 非同一控制下用什么法
  • 个人独资企业对公账户的钱可以转到私人账户吗
  • 差旅费超支金额允许报销吗
  • 提供劳务收取现金会计分录
  • 其他应付为负数怎么处理
  • 主体资格的法律规定
  • 专用发票包括增值税吗
  • 应交增值税减免税款账务处理
  • 定额发票使用年限规定
  • 固定资产折旧计提完毕怎么处理
  • 修理时换下的废品配件怎么处理?
  • 工程建造过程中发生的在建工程人员工资180万尚未支付
  • 银行存款账不平怎么办
  • 计提税金及附加怎么算
  • 工程合同主要看什么
  • 财务收入怎么写
  • Windows10如何禁止电脑自动安装软件
  • 交增值税还交营业税吗
  • 华硕win10笔记本如何恢复出厂设置
  • 解决的英文
  • 广告费发票内容是什么
  • 企业负担的社保怎么做分录
  • 收到提供劳务的收入
  • 其他综合收益的借贷方向
  • zabbix server端口
  • 数学建模回归模型例题
  • mkdir命令怎么用
  • docker_practice
  • 出口免抵退税的会计分录
  • 发票认证的目的和意义
  • 织梦专题页模板
  • python数组合并并排序
  • 汽车车票增值税税率
  • 资产管理公司的监管部门是谁
  • 企业所得税的营业收入包括营业外收入吗
  • 残保金季度申报如何计算
  • 对公账户收到钱都要开票吗
  • 股权转让如何办理
  • 基本建设费用的组成
  • 企业如果为员工缴纳社保
  • 同一客户有应收应付可以相互抵消吗
  • 结转完工入库产品成本
  • 认证测试方式有哪几种
  • 主营业务毛利率和毛利率
  • 变卖固定资产怎么交税
  • solaris 安装
  • linux的head命令
  • linux防火墙设置firewalld
  • WinCfg32.exe - WinCfg32是什么进程
  • 笔记本win7win10双系统怎么装
  • win系统文件在哪里
  • wind10怎么恢复wind7
  • redhat linux6.5安装教程
  • windows7右下角网络图标不见了怎么办
  • win10升级后小娜不能用
  • windows小娜怎么开启
  • win10 windows更新清理删不掉
  • 在Linux下HTTPie工具的使用教程
  • 苹果win10更新48%不动了
  • layui nodejs
  • linux运行环境搭建
  • javascript如何学
  • 重庆税务稽查局地址
  • 电子税务局申报截止日期
  • 个人所得税完税证明怎么开具
  • 深圳大学各专业组代码
  • 深圳拖欠工资举报网站
  • 什么是双创服务平台
  • 收购烟叶多少公斤违法
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设