У меня есть хранимая процедура с параметром UserName и в моем коде позади у меня есть объект SqlCommand, который я добавляю к параметрам с помощью метода Add. Но по какой-то причине, когда объект команды пытается запустить метод ExecuteReader, он выдает исключение. Я полностью в недоумении и понятия не имею, почему он не распознает параметр. Перед запуском метода ExecuteReader у меня есть точка прерывания, поэтому я могу подтвердить, что объект команды содержит заданные параметры, что верно. Я знаю, что хранимая процедура возвращает правильные данные, когда параметры не добавляются в объект команды, но жестко закодированы в фактической хранимой процедуре. Ниже приведено сообщение об исключении, которое указано в блоке catch. Я также вставлю свой код и первую часть хранимой процедуры. Я был бы очень признателен за любую помощь в этом вопросе, поскольку я пробовал много разных подходов безрезультатно. Спасибо заранее.
Сообщение об исключении
Процедура или функция 'someStoredProcedure' ожидает параметр '@UserName', который не был указан.
Код за
private DataTable GetLossMitData(string code, DateTime? start, DateTime? end)
{
DataTable results = new DataTable();
string connectionString = ConfigurationManager.ConnectionStrings["asdf"].ConnectionString;
string userName = String.Empty;
try
{
using (SPSite site = new SPSite(ConfigurationManager.AppSettings["someName"]))
{
using (SPWeb web = site.OpenWeb())
{
userName = web.CurrentUser.Email.ToString();
}
}
using (SqlConnection connection1 = new SqlConnection(connectionString))
{
connection1.Open();
using (SqlCommand command1 = new SqlCommand("someStoredProcedure", connection1))
{
command1.Parameters.Add(new SqlParameter("@UserName", userName));
command1.Parameters.Add(new SqlParameter("@ProductCode", code));
SqlDataReader dr = command1.ExecuteReader(CommandBehavior.CloseConnection);
results.Load(dr);
}
connection1.Close();
}
}
catch (Exception ex)
{
}
return results;
}
Сохраненная процедура
@UserName nvarchar(256),
@ProductCode nvarchar(256),
@StartDate nvarchar(256) = '1/1/1900',
@EndDate nvarchar(256) = '12/30/2012'
AS
BEGIN
SET NOCOUNT ON;
Declare @UserID int
Select @UserID = Users.UserID
from Users
where Users.Email = @UserName