位置: 编程技术 - 正文

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

  • 什么时候要计提坏账准备
  • 个人所得税如何办理退税
  • 一般纳税人简易征收最新政策2023
  • 信息技术服务可以简易征收吗
  • 软件企业认定流程
  • 收不回的款项怎么处理
  • 劳务费专票需要备注吗
  • 用友u8如何计提折旧生成凭证
  • 银行流动性比例公式
  • 个人购买房产是指什么
  • 城镇土地使用税的计税依据
  • 国税申报需要带什么资料
  • 上海电商行业怎么样
  • 个人出租房屋税率表2023年
  • 股东转让股份怎么转让
  • 如果工程款要不到的话怎么办
  • 补缴地价款是什么意思
  • 赔偿款和罚款是一样的吗
  • 金蝶k3购货发票怎么点击记账
  • 长期股票期权的会计分录怎么做?
  • 帮别的公司代销产品,对方公司不开具发票怎么做帐
  • 停工期间的各项工作包括
  • 如何设置win10电脑开机不黑屏
  • php扩展编写
  • 修改系统散热方案
  • 企业职工工伤赔偿标准税前扣除
  • 纳税申报的流程有哪三步
  • 企业向银行贷款要交印花税吗
  • 睿因无线路由器怎么设置
  • 部门活动经费怎么算
  • 其他业务支出的二级科目有哪些
  • php docblocker
  • 资产处置收益科目借贷方向
  • 100行php代码实现加密端口转发
  • 收付控制状态不正常
  • 帝国cms上传视频半天没反应
  • 跨境电商企业要进入某个国家的市场 必须先做的工作是
  • 企业应付职工薪酬
  • c语言中asin
  • 当月没有发放工资是不是就不用申报个税
  • 存款对银行经营的意义
  • 修改数据库为多个数据
  • 先给发票后付款做账
  • 持有至到期投资减值准备
  • 红字发票抵扣联和发票联要给对方吗
  • 赠品当商品卖
  • 记账凭证的基本要素包括
  • 资产负债表本期没有发生额怎么填
  • 累计扣税标准2021标准
  • 10万以下销售额怎么算
  • 事业单位会计制度
  • 什么是交易性金融资产?交易性金融资产主要有哪些特点?
  • 除MSSQL数据库text字段中恶意脚本的删方法
  • 如何使用u盘安装win11
  • windows server 2016 自动登录
  • windows1021h1新功能
  • win10无法收到wifi
  • linux配置ip地址文件
  • win8切换输入法无效
  • linux重启命令网卡
  • windows7安全更新服务
  • linux 文件数量 命令
  • 水模拟软件
  • 一个简单的飞机
  • unity2d 阴影
  • centos ohmyzsh
  • python内置函数用来打开或创建文件并返回文件对象
  • python运算符的用法
  • threejs 源码
  • python如何处理文本
  • nodejs重启
  • listview属性设置
  • 数据字典实例详解
  • js new()
  • android局部界面切换
  • 四川国税网上办税
  • 贵州省地方税务局公告2016年第13号
  • 四川税务2021
  • 税收筹划与避税的性质相同
  • 北京朝阳国家税务总局
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设