2017-06-01 20 views
0

SqlCommandBuilder.DeriveParameters在.net內核中不可用(即使在.NETCoreApp 2.0中),那麼是否有任何方法可以在.net內核中檢索存儲過程的參數列表?有沒有什麼辦法可以在.net內核中導出存儲過程的參數?

+0

它將在netstandard 2.1可用,HTTPS://github.com/dotnet/corefx/pull/20883 –

+0

我正在玩它的日常生活。感謝上帝,它完全符合我的代碼 –

回答

0

你總是可以只檢查SQL Server目錄視圖來獲取這些信息 - 例如,此查詢:

SELECT 
    pr.name,  -- Procedure name 
    pa.name,  -- Parameter name 
    pa.parameter_id, 
    ty.name,  -- Parameter datatype name 
    pa.max_length, -- Max length (of string parameters) 
    pa.precision,  -- Precision (total num of digits) for numeric parameters 
    pa.scale,   -- Scale (num of digits after decimal point) for numeric parameters 
    pa.is_output,    
    pa.has_default_value,  
    pa.is_readonly, 
    pa.is_nullable 
FROM 
    sys.procedures pr 
INNER JOIN 
    sys.parameters pa ON pa.object_id = pr.object_id 
INNER JOIN 
    sys.types ty ON ty.user_type_id = pa.user_type_id 

這可以擴展 - 有信息相當多幾個位左右,如果你對這些感興趣。

有關SQL Server中的不可或缺的目錄視圖更大量的信息和細節,請參見SQL Server catalog views

+0

由於我們公司的政策,網絡代碼中使用的sql帳戶沒有訪問這些系統對象(過程,參數,類型等)的權限。而且我們有很多數據庫服務器,因此使用您建議的t-sql創建一個存儲過程並將其部署到所有數據庫服務器並不是一個好的選擇。那麼我們有什麼方法可以在網頁代碼中做到這一點嗎(哭泣) –

+0

*那麼我們有什麼方法可以在網頁代碼中(哭泣)* - 不,不幸的是,這些信息存儲在SQL Server內**和通過這些目錄視圖可訪問。如果你不能檢查這些,你幾乎是運氣不好,我怕..... –

+0

我只是想知道'SqlCommandBuilder.DeriveParameters'(完整的.net framewok)如何處理它。是否有任何問題將其移植到.net標準?我們正在將一些庫移植到.net核心,但似乎它不是一件容易的工作:( –

相關問題