2010-02-28 13 views

Odpowiedz

26

Aby uzyskać informacje na temat procedur przechowywanych:

SELECT * FROM INFORMATION_SCHEMA.ROUTINES 

Aby znaleźć sprocs poczynając od pewnego przedrostka (na przykład "usp"):

SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_NAME LIKE 'usp%' 

Aby znaleźć wszystkie parametry procedury przechowywanej:

SELECT * FROM INFORMATION_SCHEMA.PARAMETERS WHERE SPECIFIC_NAME='YourSprocName' 

Aby znaleźć wszystkie parametry dla wszystkich procedur przechowywanych wyjściowych z pewnym przedrostek:

SELECT * FROM INFORMATION_SCHEMA.PARAMETERS WHERE SPECIFIC_NAME LIKE 'usp%' 
+0

+1. Jednak rzecz o żądanym prefiksie. – AxelEckenberger

+0

Czy powinienem zmienić WHERE SPECIFIC_NAME = ..., aby LUBIĆ "MyTable_ *"? –

+1

Zaktualizowałem swoją odpowiedź, dodając 2 kolejne przykłady, aby wyszukać według określonego prefiksu. – AdaTheDev

4

spróbować tego:

select o.name,p.name from sys.all_parameters p inner join sys.all_objects o on p.object_id = o.object_id 
where o.type = 'P' 
-1

poniższa kwerenda zwraca procedur, funkcji i filtrów przez prefiks. Nie jestem jednak pewien, czy to działałoby na serwerze sql 2000. Pozostawiam to tutaj tak czy inaczej, ponieważ jest to bardzo przydatne zapytanie.

SELECT SCHEMA_NAME(SCHEMA_ID) AS [Schema], 
SO.name AS [ObjectName], 
SO.Type_Desc AS [ObjectType (UDF/SP)], 
COALESCE(P.parameter_id,0) AS [ParameterID], 
COALESCE(P.name, 'NO PARAMETER') AS [ParameterName], 
COALESCE(TYPE_NAME(P.user_type_id),'') AS [ParameterDataType], 
COALESCE(P.max_length,0) AS [ParameterMaxBytes], 
COALESCE(P.is_output,0) AS [IsOutPutParameter] 
FROM sys.objects AS SO 
LEFT OUTER JOIN sys.parameters AS P 
ON SO.OBJECT_ID = P.OBJECT_ID 
WHERE SO.OBJECT_ID IN (SELECT OBJECT_ID 
FROM sys.objects 
WHERE TYPE IN ('P','FN')) 
AND SO.NAME LIKE 'U%' --starting with a certain prefix 
ORDER BY [Schema], SO.name, P.parameter_id 
GO 
1

Aby wyświetlić listę wszystkich procedur i ich parametrów, byłoby to w ten sposób:

SELECT o.name AS [Procedure name], p.name as [Parameter name] 
FROM sys.parameters p INNER JOIN sysobjects o ON p.object_id = o.id 
WHERE o.name LIKE 'prefix%' AND o.xtype = 'P' 

To działa w SQL Server 2016, ale myślę, że to działa w starszych wersjach też.

Powiązane problemy