我试图推断哪个存储过程用于返回一组特定的数据。
挑战在于数据库有数百个存储过程。有没有一种方法可以查询架构以找到所有具有命名参数的 StoredProcs,例如:
Unit
Member
BegDate
EndDate
...或者,除此之外,找到需要四个参数的 SP?
这会缩小一些范围并改善问题。
我试图推断哪个存储过程用于返回一组特定的数据。
挑战在于数据库有数百个存储过程。有没有一种方法可以查询架构以找到所有具有命名参数的 StoredProcs,例如:
Unit
Member
BegDate
EndDate
...或者,除此之外,找到需要四个参数的 SP?
这会缩小一些范围并改善问题。
您想要查找的有关存储过程的所有信息,都可以在 INFORMATION_SCHEMA.PARAMETERS、SYS.PARAMATERS、SYS.PROCEDURES、SYS.SQL_MODULES 等表中找到。
您的问题可以通过查询 INFORMATION_SCHEMA.PARAMETERS 中的 PARAMETER_NAME 来解决。
例如
; WITH T AS (SELECT [specific_name] FROM information_schema.parameters WHERE [parameter_name] = '@Unit'
UNION ALL
SELECT [specific_name] FROM information_schema.parameters WHERE [parameter_name] = '@Member'
UNION ALL
SELECT [specific_name] FROM information_schema.parameters WHERE [parameter_name] = '@BegDate'
UNION ALL
SELECT [specific_name] FROM information_schema.parameters WHERE [parameter_name] = '@EndDate')
SELECT [specific_name]
FROM T
GROUP BY [specific_name] HAVING COUNT(*) = 4
或者只查找具有 4 个参数的所有程序:
SELECT [specific_name] FROM information_schema.parameters GROUP BY [specific_name] HAVING COUNT(*) = 4