簡體   English   中英

選擇存儲過程變量

[英]Select stored procedure variables

有沒有一種方法可以選擇存儲過程將接收的變量?

例如,我有一個客戶表,我的主鍵是自動數字長。

我的存儲過程稱為SelectClientByKey ,類似於

select * 
from clients 
where clientId = @clientid

我還有許多其他存儲過程,我想進行查詢以獲取該存儲過程具有的變量及其數據類型。

就像是:

Select Variable, Type 
From StoredProcedure 
Where StoredProcedure.Name = 'SelectClientByKey'

結果應該是

@clientId bigInt

我不確定是否可行,有什么建議嗎?

這里被無恥地偷 如果運行它,它將為您提供所有存儲過程及其參數的列表以及一些有用的擴展信息。

SELECT
   SCHEMA_NAME(SCHEMA_ID) AS [Schema], 
   SO.name AS [ObjectName],
   SO.Type_Desc AS [ObjectType (UDF/SP)],
   P.parameter_id AS [ParameterID],
   P.name AS [ParameterName],
   TYPE_NAME(P.user_type_id) AS [ParameterDataType],
   P.max_length AS [ParameterMaxBytes],
   P.is_output AS [IsOutPutParameter]
FROM sys.objects AS SO
INNER 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')
)
ORDER BY [Schema], SO.name, P.parameter_id
GO

有可能的。 您可以使用下面的SQL查詢來獲取存儲過程,參數列表及其數據類型:

SELECT 
    o.name as StoredProcedure, p.name as Parameter, t.name as DataType
FROM 
    sys.all_objects o
JOIN
    sys.parameters p ON p.object_id = o.object_id
JOIN
    sys.types t ON t.system_type_id = p.system_type_id
WHERE 
    o.name = 'SelectClientByKey'    -- Your stored procedure name

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM