Я выполняю хранимую процедуру SQL Server из своего кода на C#, который по существу извлекает некоторые данные из базы данных на основе поставленного условия.Изменение количества записей
DataSet GetAllxxxxxByDate(string entityValue,string companyValue)
{
using (var sqlConn = new SqlConnection(GetConnectionString()))
{
using (var cmd = new SqlCommand())
{
var data = new DataSet();
cmd.CommandText = “myStoredprodecure”;
cmd.CommandType = CommandType.StoredProcedure;
cmd.Connection = sqlConn;
var eVal = string.IsNullOrWhiteSpace(entityValue) ? string.Empty : entityValue;
cmd.Parameters.AddWithValue("@entity_value", eVal);
var company = string.IsNullOrWhiteSpace(companyValue) ? string.Empty : companyValue;
cmd.Parameters.AddWithValue("@company", company);
var sqlDataAdaptor = new SqlDataAdapter(cmd);
sqlDataAdaptor.Fill(data);
return data;
}
}
}
Здесь entityValue
, companyValue
должны быть разделены запятой строки, сформированные динамически в пределах C# код и передать его в хранимой процедуре.
Например:
’first’,’second’,’third’
И хранимая процедура использует эти значения для заполнения условия NOT IN
, определенного в нем.
Проблема в том, что я получаю несогласованное количество записей при выполнении кода.
Следующий короткий снимок экрана, где первый WHERE
статья возвращение 3 записи и вторая WHERE
статья возвращение 1 запись. Входные значения для первого предложения WHERE
были заполнены из кода C#, а вторая была заполнена вручную для проверки.
Единственное различие, которое я могу определить это количество котировок.
Вопрос: может кто-нибудь помочь мне в нуле в вопросе или разница в них дает WHERE
пункт?
@d Стенли кажется правильным для меня. «entityValue», вероятно, удерживает значение ['FSEC'] вместо [FSEC]. Вы можете попытаться изменить часть своего кода, которая вызывает GetAllxxxxxByDate, или вместо этого разделите переменную на ее лидирующие и конечные символы одиночной кавычки. – OnoSendai
Изображение обновлено, чтобы включить entity_value. Спасибо – Nair
@Nair, вы создаете динамический sql в своем SP? И ваш 'NOT IN' создается из параметра, разделенного запятой? – unlimit