Мне нужна помощь в передаче табличного параметра в хранимую процедуру.У нас есть слой, который не позволяет мне указать тип параметра или SqlDbType в моем коде.
Ниже приведен код:
DataTable dataTable = new DataTable();
try
{
dataTable.Columns.AddRange(new DataColumn[9]
{
new DataColumn("ITEM_INDEX", Type.GetType("System.Int32")),
new DataColumn("SUBDIV_ID", System.Type.GetType("System.Int32")),
new DataColumn("DISC_STRT_TS",System.Type.GetType("System.String")),
new DataColumn("DISC_END_TS", System.Type.GetType("System.String")),
new DataColumn("DISC_PC", typeof(Decimal)),
new DataColumn("DISC_SPEC_PC",typeof(Decimal)),
new DataColumn("ASSOC_CLASS_CD", System.Type.GetType("System.String")),
new DataColumn("BUSN_CD", System.Type.GetType("System.String")),
new DataColumn("CREATED_BY",System.Type.GetType("System.String"))
});
foreach (var item in subDivisionDiscounts)
{
dataTable.Rows.Add(
item.ItemIndex,
item.SubDiv,
item.FromDate,
item.ToDate,
item.DiscountPercent,
item.SpecialDiscountPercent,
item.AssociateClassCode,
item.BusinessLineCode,
item.CreatedBy);
}
objHt.Clear();
objHt.Add("SUBDIVISIONDISCOUNT", dataTable);
objDs = obj.ExecQuery("ADC_SPCREATE_BULK_SUBDIV_DISCOUNT", CommandType.StoredProcedure, objHt);
ExecQuery () - это пользовательский метод, который принимает 3 параметра:
- Запрос
- КомандаТип
- Hashtable (параметры добавляются в эту хэш-таблицу и используются)
Доступные перегрузки для ExecQuery:
DataSet ExecQuery(string qryData, CommandType type, Hashtable paramTable);
DataSet ExecQuery(string qryData, CommandType type, Hashtable paramTable, int optionalCmdTimeout);
Поскольку я ограничен в использовании этого метода,Я не могу передать SQLDbType в команду execute.Это можно обойти?