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();
}
问题是在执行代码时出现异常消息:
过程或函数 '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();
我在数据库中定义了一个存储过程,我正在尝试从 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();
}
问题是在执行代码时出现异常消息: 过程或函数 '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();