Как я могу искать в схеме базы данных 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
Другие вопросы по тегам