Gibt es eine Möglichkeit, die Datenbank abzufragen und eine Liste aller gespeicherten Prozeduren und ihrer Parameter abzurufen?
ich SQL Server bin mit 2000Wie erhalte ich die Liste aller gespeicherten Prozeduren und ihrer Parameter beginnend mit einem bestimmten Präfix?
10
A
Antwort
26
Um Informationen zu den gespeicherten Prozeduren zu erhalten:
SELECT * FROM INFORMATION_SCHEMA.ROUTINES
die sprocs mit einem bestimmten Präfix (zB "usp") beginnen zu finden:
SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_NAME LIKE 'usp%'
Um alle Parameter für eine gespeicherte Prozedur zu finden:
SELECT * FROM INFORMATION_SCHEMA.PARAMETERS WHERE SPECIFIC_NAME='YourSprocName'
SELECT * FROM INFORMATION_SCHEMA.PARAMETERS WHERE SPECIFIC_NAME LIKE 'usp%'
4
versuchen Sie diesen:
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
die folgende Abfrage gibt die Prozeduren, Funktionen und Filter durch einen PräfixUm mit einem bestimmten Präfix beginnen alle Parameter für alle gespeicherten Prozeduren zu finden. Ich bin mir aber nicht sicher, ob es auf SQL Server 2000 funktionieren würde. Ich lasse es hier trotzdem die Referenz, denn es ist eine gute nützliche Abfrage.
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'
Es funktioniert in SQL Server 2016, aber ich denke, es funktioniert auch in älteren Versionen:
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
Um eine Liste aller Verfahren und deren Parameter zu zeigen, es auf diese Weise sein würde.
+1. Allerdings etwas über das angeforderte Präfix. – AxelEckenberger
Soll ich den WHERE SPECIFIC_NAME = ... zu LIKE "MyTable_ *" ändern? –
Meine Antwort wurde mit 2 weiteren Beispielen aktualisiert, um nach einem bestimmten Präfix zu suchen. – AdaTheDev