当前位置: 首页 > 知识库问答 >
问题:

在T-Sql中使用用户定义的数据类型标识所有存储过程和表

封鸿雪
2023-03-14

我正在使用SSMS,我有一个用户定义的数据类型,它是在2000年初创建的,并附有一个规则对象。

许多表和存储过程使用此用户定义的数据类型作为类型。我想修改这些表和存储过程以删除这个UDT,这样我就可以用check约束替换它们,但是我很难识别将这个UDT用作类型的所有表和存储过程。

我一直在查看旧脚本,并使用sp_helptable_name来查找这些实例,但我想知道是否有一种方法可以找到所有使用特定用户定义数据类型的表/列和存储程序。

非常感谢。

编辑:我找到了如何在表中查找用户定义的数据类型的所有用法

SELECT TABLE_NAME, COLUMN_NAME, DOMAIN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE DOMAIN_NAME = 'UDT_name'

对于存储过程,我删除了我发现的方法,因为NicVerAZ在下面链接了一种更好的方法来实现这一点。

共有1个答案

朱睿
2023-03-14

请参阅以下文章,了解如何在存储过程定义中正确搜索字符串:

SQL Server中存储过程中的搜索文本

正如我在上面的评论中所发布的,ROUTINE_DEFINITION是一个NVARCHAR(4000),更长的存储过程的定义被截断。

你的第二种方法不错,它可以做到,但你的第一种方法更正确。

 类似资料:
  • 问题内容: SQL Server中的用户定义数据类型是中级SQL用户应该了解和使用的吗? 使用UDT的优缺点是什么? 问题答案: 我的建议是永远不要使用它们。如果您不得不更改定义,那么您将处于一个痛苦的世界。自SQL Server 2000以来,这种情况可能有所改善,对新版本更熟悉的人可以告诉您现在是否可以安全使用,但是直到我确认这一点并亲自进行测试后,我才会不要把它放在我的生产系统上。

  • 主要内容:示例Transact SQL 中的存储过程用于一次又一次地节省编写代码的时间。它通过将过程存储在数据库中并通过传递参数来获得所需的输出来实现这一点。 语法: 下面是存储过程创建的语法 - 参数可选:当我们创建一个过程时,一个或多个参数被传递到过程中。存储过程中有3种类型的参数: IN - 过程可以引用参数。该过程将覆盖参数的值。 OUT- 过程不能引用参数,但过程会覆盖参数值。 IN OUT- 参数被

  • 我参与了一对java项目,其中使用oracle存储过程,使用oracle自定义数据类型,例如oracle对象

  • 问题内容: 在Oracle DB中: 我有以下存储过程: 类型IDS_TABLE是: 如何在Java中调用getInfo? 问题答案: 手动设置Oracle SQL对象和java对象之间的链接不是一件容易的事。特别是,从用户定义对象的数组(或嵌套表)到Java到Oracle的传递比标准数据类型的数组更复杂。换句话说,调用带有签名的过程会更容易: 而不是签名为: 你可以在过程周​​围编写包装器,以将

  • 问题内容: 如何在常规SQL查询中结合执行存储过程以及使用其结果或参数? 例如,我想执行以下操作: 等等。 问题答案: 不,您需要使用临时表 那你就可以加入 如果您不知道该过程的列和数据类型,则可以使用以下出色答案:将存储过程的结果插入临时表中 简而言之,它用于将存储过程执行到动态创建的#temp表中,而无需命名和了解所有列的类型。

  • 我想从Java代码调用SQL服务器2008中的一个存储过程。存储过程以用户定义的表类型为参数(基本上是数组)。请给我Java语法来调用存储过程并将数组作为输入参数传递