2010-02-28 20 views

Trả lời

26

Để có được thông tin về các thủ tục lưu trữ:

SELECT * FROM INFORMATION_SCHEMA.ROUTINES 

Để tìm sprocs bắt đầu với một tiền tố nhất định (ví dụ: "USP"):

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

Để tìm tất cả thông số cho quy trình được lưu trữ:

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

Để tìm tất cả các thông số cho tất cả các thủ tục lưu trữ bắt đầu với một tiền tố nhất định:

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

+1. Tuy nhiên, điều về tiền tố được yêu cầu. – AxelEckenberger

+0

Tôi có nên thay đổi WHERE SPECIFIC_NAME = ... thành LIKE "MyTable_ *" không? –

+1

Đã cập nhật câu trả lời của tôi với 2 ví dụ khác, để tìm kiếm theo một tiền tố nhất định. – AdaTheDev

4

thử cái này:

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

truy vấn sau trả về thủ tục, chức năng và các bộ lọc bằng một tiền tố. Tôi không chắc chắn mặc dù, nếu nó sẽ làm việc trên máy chủ sql 2000. Tôi để nó ở đây tham chiếu anyway, bởi vì nó là một truy vấn hữu ích tốt.

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

Để hiển thị một danh sách của tất cả các thủ tục và các thông số của họ, nó sẽ là như thế này:

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' 

Nó hoạt động trong SQL Server 2016 nhưng tôi đoán nó hoạt động trong phiên bản cũ quá.

Các vấn đề liên quan