Как я могу искать в схеме базы данных SQL Server, чтобы найти StoredProcs с указанным набором аргументов?
Я пытаюсь определить, какой Stored Proc используется для возврата определенного набора данных.
Проблема в том, что в базе данных хранятся сотни сохраненных процедур. Есть ли способ, которым я могу запросить схему, чтобы найти все StoredProcs с именованными параметрами, например:
Unit
Member
BegDate
EndDate
... или, кроме этого, найти SP, которые принимают четыре аргумента?
Это немного сузит ситуацию и улучшит ситуацию.
1 ответ
Решение
Всю информацию, которую вы хотите найти о хранимых процедурах, вы можете найти в таких таблицах, как INFORMATION_SCHEMA.PARAMETERS, SYS.PARAMATERS, SYS.PROCEDURES, SYS.SQL_MODULES и т. Д.
Ваша проблема может быть решена путем запроса PARAMETER_NAME в INFORMATION_SCHEMA.PARAMETERS.
например
; 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