位置: 编程技术 - 正文

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

  • 工程项目需要交5000万保证金合理吗
  • 企业留存的盈余公积属于哪个会计科目
  • 企业所得税季度申报表A类
  • 商业用房出租税率是多少
  • 小规模纳税人每季度超过30万交税
  • 归属于母公司的净资产
  • 现金清查时,发现长款200元,未查明原因,经批准后转销
  • 哪些纳税人需要实名办税
  • 关税如何征收
  • 先收入后开票如何做账
  • 小企业准则适用范围
  • 增值税专用发票几个点
  • 小型微利企业所得税优惠政策2023
  • 个人能去税务局开普票吗
  • 转让土地使用权怎么交土地增值税
  • 购入商品入库时发现实收物多余应收数计入什么科目
  • 招大学生做兼职的网站
  • 加速折旧法和直线折旧法的区别
  • windows10自带桌面时钟
  • NPFMSG.exe - NPFMSG是什么进程 有什么用
  • php怎么把图片存入mysql
  • 购买电子承兑差额怎么算
  • 受托方代收代缴的消费税计入成本吗
  • mac os x 10.0
  • win11怎么录屏游戏
  • 所得税如何做帐
  • 房地产企业销售无产权车位
  • 材料发票入账
  • 2021发票勾选认证
  • 材料暂估入账
  • 发票开具时限是怎么规定的
  • 库存股会计处理 会计视野
  • 远眺格斯韦因斯泰因村和格斯韦因斯泰因城堡 (© Juergen Sack/Getty Images)
  • php redis常用命令
  • 建筑工程合同生效的条件有哪些?
  • 简述php图像操作的基本步骤
  • Yii2 rbac权限控制之rule教程详解
  • 增值税电子普通发票怎么打印
  • react 组件化
  • AttributeError: cannot assign module before Module.__init__() call
  • phpcms怎么样
  • 销售返利的账务处理购买方
  • 定额备用金制度报销时用什么科目
  • 预付账款主要核算哪些内容
  • 新旧会计准则对比
  • 金蝶固定资产累计折旧凭证生成
  • 购买净资产为负数怎么办
  • sql server搜索语句
  • 个人住房租赁给公司如何开票
  • 进项税怎么记账
  • 公司收到某人打款怎么做分录
  • 事业单位 abc类
  • 每个月交工会经费
  • 粗纤维测定仪价格
  • 咨询费的支出范围
  • 加油卡充值发票可以抵税吗
  • 发票盖章需要知道的10个问题
  • mysql为什么很受大家青睐
  • win8.1无法进入系统
  • linux中vi编辑器怎么使用
  • 如何使用chatgpt
  • centos vi命令
  • win10任务界面
  • win7 64位旗舰版电脑如何提高鼠标的精准度?提高鼠标的精准度的方法
  • android中常用的adapter不包括
  • python获取当前路径的方法
  • unity3d网络游戏开发
  • 事件传播路径
  • jquery写网页
  • jQuery leonaScroll 1.1 自定义滚动条插件(推荐)
  • unity3d 场景
  • 权限android.permission.write
  • python冒泡排序流程图
  • javascript怎么样
  • 简单的比较
  • 浙江职称评审网官网
  • 地方税务网上申报怎么弄
  • 持有上海市居住证一年以上是什么意思
  • 增值税发票税控盘开票软件怎么下载
  • 个人工资所得税缴纳标准2023年
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设