2010-02-28 4 views

Répondre

26

Pour obtenir des informations sur les procédures stockées:

SELECT * FROM INFORMATION_SCHEMA.ROUTINES 

Pour trouver les sprocs commençant par un certain préfixe (par exemple "usp"):

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

Pour rechercher tous les paramètres d'une procédure stockée:

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

Pour trouver tous les paramètres pour toutes les procédures stockées en commençant par un certain préfixe:

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

+1. Cependant, chose sur le préfixe demandé. – AxelEckenberger

+0

Devrais-je changer le WHERE SPECIFIC_NAME = ... en LIKE "MyTable_ *"? –

+1

Mise à jour ma réponse avec 2 autres exemples, pour rechercher par un certain préfixe. – AdaTheDev

4

essayez celui-ci:

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

la requête suivante retourne les procédures, les fonctions et les filtres par un préfixe. Je ne suis pas sûr cependant, si cela fonctionnerait sur sql server 2000. Je laisse ici la référence de toute façon, parce que c'est une bonne question utile.

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

Pour afficher une liste de toutes les procédures et leurs paramètres, il serait ainsi:

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' 

Il travaille dans SQL Server 2016, mais je suppose que cela fonctionne dans les anciennes versions aussi.

Questions connexes