簡體   English   中英

SQL 服務器存儲過程調用

[英]SQL Server stored procedure call

我在數據庫中定義了一個存儲過程,我試圖從 C# 服務器調用它。

在我的存儲庫中,我有一個如下所示的通用方法:

private IList<T> ExecuteReturningProcedure<T>(string procedureName, params ValueTuple<string, object>[] parameters)
        {
            List<T> objList = null;

            ExecuteCommand(procedureName, parameters, CommandType.StoredProcedure, (cmd) =>
            {
                using (var reader = cmd.ExecuteReader())
                {
                    objList = MapToList<T>(reader).ToList();
                }
            });

            return objList;
        }

我為我的調用制定了如下所示的具體方法:

public List<dynamic> GetDataSubmissionEntries(Guid dataSubmissionId)
        {
            var parameters = Array.Empty<ValueTuple<string, object>>(); 
            parameters.Append(new ValueTuple<string,object>("@dataSubmissionId", dataSubmissionId));

            var entries = ExecuteReturningProcedure<dynamic>("[DataSubmission].[RetrieveDataSubmissionEntries]", parameters);

            return entries.ToList();
        }

問題是,當代碼執行時,我收到一條消息異常:Procedure or function 'RetrieveDataSubmissionEntries' 需要參數'@dataSubmissionId',但未提供該參數。

我是否以錯誤的方式構造參數數組?

嘗試像這樣設置 SP 的參數:

SqlCommand cmd_Sp = new SqlCommand("YourSPname", conn);
cmd_Sp.CommandType = CommandType.StoredProcedure;
cmd_Sp.Parameters.Add("@dataSubmissionId", SqlDbType.VarChar).Value = dataSubmissionId.ToString();

暫無
暫無

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

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