位置: 编程技术 - 正文

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

  • 个体工商户开劳务发票税率
  • 定额税改为查账征收,可以弥补上年度亏损吗
  • 一般纳税人支付给小规模纳税人的税率
  • 怎样查是否为一类银行卡
  • 企业所得税可以税前扣除的税有哪些
  • 机动车发票申请流程
  • 土地违约金怎么写合同
  • 税局代开的法律顾问费能否抵扣
  • 承租人对融资租赁业务核算有哪些主要内容
  • 多层股权结构设计控制法
  • 减少实收资本会引起资产和所有者权益发生变化吗
  • 核定征收的企业所得税怎么算
  • 无形资产进项税计入成本吗?
  • 少计提的增值税怎么处理
  • 低值易耗品进项税额转出账务处理
  • 为什么报税资料老是显示有
  • 金税盘一直更新登陆不进去
  • 不得核定征收企业所得税的行业
  • 个税什么情况可以不用汇算
  • 公司注销资产负债表期末余额不能为0
  • 销售二手设备税率
  • 法人名下两家公司,客户买货可以用另外一个公司开票吗
  • 个人证券交易结算资金
  • 企业资产利润率计算公式
  • 怎么查银行账户余额
  • 递延收益的账务处理案例
  • win11怎么改名
  • 一般纳税人进项税额转出会计分录
  • u盘加载缓慢
  • 可转债溢价率多高为好
  • 外购固定资产对账怎么算
  • 银行对公账户收款码手续费多少
  • PHP:rawurldecode()的用法_url函数
  • 房产无偿过户给朋友能让他还吗?
  • 房屋装修各项费用比例
  • laravel框架实现增删改查
  • php和mysql的联合使用
  • GPT-4 手画设计稿 直接生成前端页面
  • h5移动端网页设计
  • 技术部周报怎么写
  • 企业收到发票冲销怎么办
  • 异地项目需要预缴增值税吗
  • 租房发票怎么缴税
  • 用友t3固定资产清理怎么操作
  • 有什么是即征即退税的
  • 缴纳增值税的营业收入
  • 小规模企业所得税怎么征收
  • 中华人民共和国企业所得税年度纳税申报表
  • ado连接access数据库
  • 差旅费包括内容
  • 无形资产比如
  • 自然人扣缴客户端恢复数据
  • 个人开技术服务费
  • 会计凭证的做账原则
  • 企业刚注册成功又要注销要什么手续
  • 公司利润如何
  • 建筑行业异地预缴税率
  • 住宿费专用发票会计分录
  • 预包装食品加工及销售营业执照图片
  • 月初计提工资,月中发放
  • 企业收到补贴资金怎么办
  • 内部资金管理实施细则
  • mysql5.6无法启动
  • ubuntu login用户名
  • OS X Yosemite系统下载失败怎么办?OS X 10.10下载错误解决方法
  • 关闭windows输入法
  • win10预览版好吗
  • windows8网页版
  • cocos2dx屏幕适配解决方案
  • 如何用nodejs搭建服务端
  • python简单gui
  • javascript怎么学
  • Python默认参数 数组坑
  • javascript教程完整版
  • Android IntentFilter 匹配原则浅析
  • 重庆市委常委是副部级干部吗?
  • 如何在网上查看自己的营业执照
  • 小微企业印花税的税率是多少
  • 河北国税网上办税云厅手机
  • 宁波国税发票查询
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设