如何获取指定存储过程集合对应的自定义用户类型列表
批量查询实现方案
你可以通过拆分逗号分隔的存储过程名称,结合关联查询的方式兼容批量场景,完整实现代码如下:
-- 替换变量值为你实际的逗号分隔存储过程列表 DECLARE @InputProcList NVARCHAR(MAX) = 'dbo.Procedure1,dbo.Procedure2,dbo.Procedure3' SELECT LTRIM(RTRIM(s.value)) AS 所属存储过程, r.referenced_entity_name AS 自定义用户类型名称 FROM STRING_SPLIT(@InputProcList, ',') s CROSS APPLY sys.dm_sql_referenced_entities(LTRIM(RTRIM(s.value)), 'OBJECT') r WHERE r.referenced_class_desc = 'TYPE' -- 可选:只过滤用户自定义类型,排除系统类型 -- AND r.is_user_defined = 1
注意事项
- 该实现默认适配SQL Server 2016及以上版本,低版本SQL Server需先自定义字符串拆分函数,替换
STRING_SPLIT部分逻辑即可 - 存储过程名称建议携带schema前缀(如
dbo.xxx),避免不同schema下同名对象导致查询报错 - 如果存在输入的存储过程名称不存在的情况,会触发函数报错,可提前校验输入的存储过程名称合法性
内容的提问来源于stack exchange,提问作者Mickey P
相关产品推荐
相关产品推荐

