簡體   English   中英

如何使用 IMultipleResults 並從 SQL 存儲過程返回 Output 參數?

[英]How can I use IMultipleResults AND return Output Parameters from a SQL Stored procedure?

我有一個 SQL 存儲過程,我正在使用 Linq-To-SQL 訪問它。 它返回多個結果集以及一對 output 參數。 當我在 SQL 中將過程作為查詢運行時,它可以工作,但是當我嘗試從我的 C# 代碼訪問它時,它不想工作。 'UserHasAccessToOption' 參數始終返回 false,即使它在存儲過程中僅設置為 true。

同樣,它返回並允許我瀏覽存儲過程返回的其他結果集,但它不返回任何 SQL output 參數。

這是我訪問存儲過程並返回 IMultipleResults object 的代碼:

    [FunctionAttribute(Name = "dbo.GetOption")]
    [ResultType(typeof(Option))]
    [ResultType(typeof(LoanPurpose))]
    [ResultType(typeof(LoanType))]
    [ResultType(typeof(User))]
    [ResultType(typeof(Client))]
    [ResultType(typeof(OrganizationFinancialItem))]
    public IMultipleResults GetOption(
        int? OptionID, 
        int UserID, 
        bool GetClients, 
        bool GetOtherOrganizationUsers, 
        bool GetLoanPurposes, 
        bool GetLoanTypes, 
        bool GetOrganizationFinancialItems,
        ref bool? UserHasAccessToOption)
    {
        using (profiler.Step("Call \"GetOption\" SProc"))
        {
            IExecuteResult result = this.ExecuteMethodCall(this, ((MethodInfo)(MethodInfo.GetCurrentMethod()))
                , OptionID
                , UserID
                , GetClients
                , GetOtherOrganizationUsers
                , GetLoanPurposes
                , GetLoanTypes
                , GetOrganizationFinancialItems
                , UserHasAccessToOption);
            return (IMultipleResults)(result.ReturnValue);
        }
    }

output參數的值在數據庫中的數據stream中最后發送,所以必須讀取到最后一個結果集的末尾才能獲取Z78E6221F6393D1356681DB398F14CED參數。

我建議您查看這篇有價值的文章的“處理來自 SPROC 的多個結果形狀”部分:

LINQ 到 SQL(第 6 部分 - 使用存儲過程檢索數據)

暫無
暫無

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

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