示例#1
0
        private static void ReturnSalesProcessedRecords(List <Total> _totalRevenueList)
        {
            SqlPipe pipe = SqlContext.Pipe;

            SqlMetaData[] cols = new SqlMetaData[4];
            cols[0] = new SqlMetaData("id", SqlDbType.Int);
            cols[1] = new SqlMetaData("TotalRevenue", SqlDbType.Decimal, 38, 4);
            cols[2] = new SqlMetaData("DatetimeStamp", SqlDbType.DateTime);
            cols[3] = new SqlMetaData("TotalRevenueNew", SqlDbType.Decimal, 38, 4);


            SqlDataRecord row = new SqlDataRecord(cols);

            pipe.SendResultsStart(row);

            //TODO: Sort the list once more time before projecting them into a table
            foreach (var _totalRevenueItem in _totalRevenueList)
            {
                row.SetInt32(0, _totalRevenueItem.Id);
                row.SetDecimal(1, _totalRevenueItem.TotalRevenue);
                row.SetDateTime(2, _totalRevenueItem.DatetimeStamp);
                row.SetDecimal(3, _totalRevenueItem.TotalRevenueNew);
                pipe.SendResultsRow(row);
            }
            pipe.SendResultsEnd();
        }
示例#2
0
    public static void CallQuoteService(string ticker, string quoteType, DateTime?date)
    {
        SqlDataRecord record = new SqlDataRecord(
            new SqlMetaData("Ticker", SqlDbType.VarChar, 20),
            new SqlMetaData("Date", SqlDbType.DateTime, -1),
            new SqlMetaData("Open", SqlDbType.Decimal, -1),
            new SqlMetaData("Close", SqlDbType.Decimal, -1),
            new SqlMetaData("High", SqlDbType.Decimal, -1),
            new SqlMetaData("Low", SqlDbType.Decimal, -1),
            new SqlMetaData("Wap", SqlDbType.Decimal, -1),
            new SqlMetaData("Volume", SqlDbType.BigInt, -1),
            new SqlMetaData("ErrorMessage", SqlDbType.VarChar, -1)
            );

        try
        {
            SqlPipe sqlPip = SqlContext.Pipe;
            var     result = ClientUtilities.GetQuote(ticker, quoteType, date.Value);
            record.SetString(0, result.Ticker);
            record.SetDateTime(1, result.Date);
            record.SetDecimal(2, (decimal)result.Open);
            record.SetDecimal(3, (decimal)result.Close);
            record.SetDecimal(4, (decimal)result.High);
            record.SetDecimal(5, (decimal)result.Low);
            record.SetDecimal(6, (decimal)result.Wap);
            record.SetInt64(7, result.Volume);
            record.SetString(8, result.ErrorMessage);
            SqlContext.Pipe.Send(record);
        }
        catch (Exception ex)
        {
            record.SetString(8, ex.Message);
            SqlContext.Pipe.Send(record);
        }
    }
示例#3
0
        //https://stackoverflow.com/questions/36725999/c-sharp-fastest-way-to-insert-data-into-sql-database
        //for xml based deserialization into objects to pass in ienumerable
        //https://stackoverflow.com/questions/4143421/fastest-way-to-serialize-and-deserialize-net-objects
        //https://stackoverflow.com/questions/25770180/how-can-i-insert-10-million-records-in-the-shortest-time-possible

        public IEnumerable <SqlDataRecord> GetSqlDataRecords()
        {
            SqlMetaData MetaDataCol1;
            SqlMetaData MetaDataCol2;
            SqlMetaData MetaDataCol3;

            MetaDataCol1 = new SqlMetaData("stringTest", SqlDbType.NVarChar);
            MetaDataCol2 = new SqlMetaData("intTest", SqlDbType.Int);
            MetaDataCol3 = new SqlMetaData("doubleTest", SqlDbType.Decimal, 18, 8); // precision 18, 8 scale


            SqlDataRecord DataRecord = new SqlDataRecord(new SqlMetaData[] { MetaDataCol1, MetaDataCol2, MetaDataCol3 });

            var lines = File.ReadLines(_location + _filename);

            foreach (var line in lines)
            {
                var data = line.Split('|');
                DataRecord.SetString(0, data[2]);
                DataRecord.SetInt32(1, Convert.ToInt32(data[0]));
                DataRecord.SetDecimal(2, Convert.ToDecimal(data[1]));

                yield return(DataRecord);
            }
        }
        public void AddParameters(IDbCommand command, SqlMapper.Identity identity)
        {
            var sqlCommand = (SqlCommand)command;

            sqlCommand.CommandType = CommandType.StoredProcedure;
            var items = new List <SqlDataRecord>();

            foreach (var param in _transfers)
            {
                var rec = new SqlDataRecord(_transferIdMetaData, _senderAccountIdMetaData, _receiverAccountIdMetaData, _requiredPaymentId, _commitmentId, _amount, _type, _collectionPeriodName);
                rec.SetInt64(0, param.TransferId);
                rec.SetInt64(1, param.SenderAccountId);
                rec.SetInt64(2, param.ReceiverAccountId);
                rec.SetGuid(3, param.RequiredPaymentId);
                rec.SetInt64(4, param.CommitmentId);
                rec.SetDecimal(5, param.Amount);
                rec.SetString(6, param.Type.ToString());
                rec.SetString(7, param.CollectionPeriodName);

                items.Add(rec);
            }

            var p = sqlCommand.Parameters.Add("@transfers", SqlDbType.Structured);

            p.Direction = ParameterDirection.Input;
            p.TypeName  = "[Data_Load].[TransferEntity]";
            p.Value     = items;
        }
示例#5
0
        private static IEnumerable <SqlDataRecord> BindDishRows(IEnumerable <DishEntity> dishesToUpdate)
        {
            foreach (var dish in dishesToUpdate)
            {
                SqlDataRecord record = new SqlDataRecord(typ_DishTable);

                record.SetInt64(0, dish.DishId);
                record.SetInt64(1, dish.ProviderId);
                record.SetInt32(2, (int)dish.DishType);
                record.SetString(3, dish.DishName);
                record.SetString(4, dish.Description);
                record.SetString(5, dish.Ingredients);
                record.SetDecimal(6, dish.Price);
                record.SetInt32(7, dish.WaitingTimeInMins);
                if (!dish.ThumbNailPictureKey.HasValue)
                {
                    record.SetDBNull(8);
                }
                else
                {
                    record.SetGuid(8, dish.ThumbNailPictureKey.Value);
                }
                record.SetBoolean(9, dish.Available);

                yield return(record);
            }
        }
        /// <summary>
        /// Sets the decimal.
        /// </summary>
        /// <param name="record">The record.</param>
        /// <param name="fieldName">Name of the field.</param>
        /// <param name="value">The value.</param>
        public static void SetDecimal(this SqlDataRecord record, string fieldName, decimal?value)
        {
            int ordinal = GetOrdinal(record, fieldName);

            if (value.HasValue)
            {
                record.SetDecimal(ordinal, value.Value);
            }
        }
示例#7
0
        public new IEnumerator <SqlDataRecord> GetEnumerator()
        {
            SqlDataRecord returnValue = new SqlDataRecord(
                new SqlMetaData("ItemId", SqlDbType.Int),
                new SqlMetaData("Quantity", SqlDbType.Int),
                new SqlMetaData("PricePerItem", SqlDbType.Decimal),
                new SqlMetaData("TotalPrice", SqlDbType.Decimal)
                );

            foreach (var item in _orderItemList)
            {
                returnValue.SetInt32(0, item.ItemId);
                returnValue.SetInt32(1, item.Quantity);
                returnValue.SetDecimal(2, item.PricePerItem);
                returnValue.SetDecimal(3, item.TotalPrice);
                yield return(returnValue);
            }
        }
示例#8
0
        IEnumerator <SqlDataRecord> IEnumerable <SqlDataRecord> .GetEnumerator()
        {
            var sqlRow = new SqlDataRecord(new SqlMetaData("Habitacion", SqlDbType.Decimal));

            foreach (Habitacionalities cust in this)
            {
                sqlRow.SetDecimal(0, cust.Habitacion);
                yield return(sqlRow);
            }
        }
示例#9
0
        IEnumerator <SqlDataRecord> IEnumerable <SqlDataRecord> .GetEnumerator()
        {
            var sqlRow = new SqlDataRecord(new SqlMetaData("Funcionalidades", SqlDbType.Decimal));

            foreach (Funcionality cust in this)
            {
                sqlRow.SetDecimal(0, cust.Funcionalidades);
                yield return(sqlRow);
            }
        }
示例#10
0
 public static void SetDecimal(this SqlDataRecord record, int index, decimal?value)
 {
     if (value == null)
     {
         record.SetDBNull(index);
     }
     else
     {
         record.SetDecimal(index, value ?? 0);
     }
 }
示例#11
0
        private static SqlDataRecord CreateBookRecipeIngredientRecord(EditIngredientModel ingredient)
        {
            var dataRecord = new SqlDataRecord(BookRecipeIngredientMetaData);

            dataRecord.SetInt32(0, ingredient.IngredientNo.Value);
            dataRecord.SetString(1, ingredient.Name);
            dataRecord.SetDecimal(2, ingredient.Quantity.Value);
            var quantityUnit = UnitKey.Parse(ingredient.QuantityUnit);

            dataRecord.SetString(3, quantityUnit.UnitTypeCode);
            dataRecord.SetString(4, quantityUnit.UnitCode);
            dataRecord.SetDecimal(5, ingredient.Serving.Value);
            var servingUnit = UnitKey.Parse(ingredient.ServingUnit);

            dataRecord.SetString(6, servingUnit.UnitTypeCode);
            dataRecord.SetString(7, servingUnit.UnitCode);
            dataRecord.SetDecimal(8, ingredient.CaloriesPerServing.Value);
            dataRecord.SetDecimal(9, ingredient.ProteinPerServing.Value);
            return(dataRecord);
        }
示例#12
0
 internal override void SetDataRecordValue(SqlDataRecord record, int ordinal)
 {
     if (InputValue == null)
     {
         record.SetDBNull(ordinal);
     }
     else
     {
         record.SetDecimal(ordinal, InputValue.Value);
     }
 }
示例#13
0
 public override void Set(SqlDataRecord record, int ordinal, decimal?value)
 {
     if (value.HasValue)
     {
         record.SetDecimal(ordinal, value.Value);
     }
     else
     {
         record.SetDBNull(ordinal);
     }
 }
 public static void SetDecimal(this SqlDataRecord record, int ordinal, decimal?value)
 {
     if (value != null)
     {
         record.SetDecimal(ordinal, (decimal)value);
     }
     else
     {
         record.SetDBNull(ordinal);
     }
 }
        IEnumerator <SqlDataRecord> IEnumerable <SqlDataRecord> .GetEnumerator()
        {
            var row = new SqlDataRecord(new SqlMetaData("value1", SqlDbType.Int), new SqlMetaData("value2", SqlDbType.Money));

            foreach (Pair <int, decimal> kv in this)
            {
                row.SetInt32(0, kv.Item1);
                row.SetDecimal(1, kv.Item2);
                yield return(row);
            }
        }
        private static IEnumerable <SqlDataRecord> BindOrderRows(IEnumerable <OrderEntity> ordersToUpdate)
        {
            foreach (var order in ordersToUpdate)
            {
                SqlDataRecord record = new SqlDataRecord(typ_OrderTable);

                record.SetInt64(0, order.OrderId);
                record.SetInt64(1, order.UserId);
                record.SetDateTime(2, order.OrderDate);
                record.SetDecimal(3, order.SubTotal);
                if (order.Tax.HasValue)
                {
                    record.SetDecimal(4, order.Tax.Value);
                }
                else
                {
                    record.SetDBNull(4);
                }
                if (order.OtherCharges.HasValue)
                {
                    record.SetDecimal(5, order.OtherCharges.Value);
                }
                else
                {
                    record.SetDBNull(5);
                }
                if (!string.IsNullOrWhiteSpace(order.Notes))
                {
                    record.SetString(6, order.Notes);
                }
                else
                {
                    record.SetDBNull(6);
                }
                record.SetInt32(7, (int)order.Status);

                yield return(record);
            }
        }
示例#17
0
        IEnumerator <SqlDataRecord> IEnumerable <SqlDataRecord> .GetEnumerator()
        {
            SqlDataRecord ret = new SqlDataRecord(
                new SqlMetaData("ID", SqlDbType.Int),
                new SqlMetaData("ID2", SqlDbType.Int),
                new SqlMetaData("QUANTITY", SqlDbType.Decimal),
                new SqlMetaData("QUANTITY2", SqlDbType.Decimal),
                new SqlMetaData("STATUS", SqlDbType.SmallInt),
                new SqlMetaData("ACTION", SqlDbType.SmallInt)
                );

            foreach (tBaseIdv3 data in this)
            {
                ret.SetInt32(0, data.Id);
                ret.SetInt32(1, data.Id2);
                ret.SetDecimal(2, data.Quantity);
                ret.SetDecimal(3, data.Quantity2);
                ret.SetInt16(4, data.Status);
                ret.SetInt16(5, data.Action);
                yield return(ret);
            }
        }
        public override void Set(SqlDataRecord record, int ordinal, decimal?value)
        {
            EnsureArg.IsNotNull(record, nameof(record));

            if (value.HasValue)
            {
                record.SetDecimal(ordinal, value.Value);
            }
            else
            {
                record.SetDBNull(ordinal);
            }
        }
示例#19
0
        IEnumerator <SqlDataRecord> IEnumerable <SqlDataRecord> .GetEnumerator()
        {
            SqlDataRecord ret = new SqlDataRecord(
                new SqlMetaData("DetalleVenta", SqlDbType.Int),
                new SqlMetaData("IdProducto", SqlDbType.Int),
                new SqlMetaData("IdVenta", SqlDbType.Int),
                new SqlMetaData("Cantidad", SqlDbType.Int),
                new SqlMetaData("PrecioUnitario", SqlDbType.Decimal),
                new SqlMetaData("Igv", SqlDbType.Money),
                new SqlMetaData("SubTotal", SqlDbType.Money)
                );

            foreach (DetalleVenta data in this)
            {
                ret.SetInt32(0, data.IdDetalleVenta);
                ret.SetInt32(1, data.IdP);
                ret.SetInt32(2, data.IdVenta);
                ret.SetInt32(3, data.Cantidad);
                ret.SetDecimal(4, data.PUnitario);
                ret.SetDecimal(5, data.Igv);
                ret.SetDecimal(6, data.SubTotal);
                yield return(ret);
            }
        }
示例#20
0
        private static SqlDataRecord CreateFractalRecord(decimal?value)
        {
            var record = new SqlDataRecord(new SqlMetaData("Value", SqlDbType.Decimal));

            if (value.HasValue)
            {
                record.SetDecimal(0, value.Value);
            }
            else
            {
                record.SetDBNull(0);
            }

            return(record);
        }
示例#21
0
        public static IEnumerable <SqlDataRecord> ToSqlDataRecords(List <int> filters)
        {
            var metaData = new[]
            {
                new SqlMetaData("product_id", SqlDbType.Int),
                new SqlMetaData("price", SqlDbType.Decimal, 18, 9)
            };

            foreach (var filter in filters)
            {
                var record = new SqlDataRecord(metaData);
                record.SetInt32(0, filter);
                record.SetDecimal(1, 0);
                yield return(record);
            }
        }
        IEnumerator <SqlDataRecord> IEnumerable <SqlDataRecord> .GetEnumerator()
        {
            var sqlRow = new SqlDataRecord(
                new SqlMetaData("ItemId", SqlDbType.Int),
                new SqlMetaData("Quantity", SqlDbType.Decimal),
                new SqlMetaData("TranId", SqlDbType.VarChar, 50),
                new SqlMetaData("TranDate", SqlDbType.Date));

            foreach (ItemOpeningStockType cust in this)
            {
                sqlRow.SetSqlInt32(0, cust.ItemId);
                sqlRow.SetDecimal(1, cust.Quantity);
                sqlRow.SetString(2, cust.TranId);
                sqlRow.SetDateTime(3, cust.TranDate);
                yield return(sqlRow);
            }
        }
            // Custom iterator method to support TVPs in SQL Server 2008
            IEnumerator <SqlDataRecord> IEnumerable <SqlDataRecord> .GetEnumerator()
            {
                var sdr = new SqlDataRecord(
                    new SqlMetaData("OrderId", SqlDbType.Int),
                    new SqlMetaData("LineNumber", SqlDbType.Int),
                    new SqlMetaData("ProductId", SqlDbType.Int),
                    new SqlMetaData("Quantity", SqlDbType.Int),
                    new SqlMetaData("Price", SqlDbType.Money));

                foreach (OrderDetail od in this)
                {
                    sdr.SetInt32(0, od.OrderId);
                    sdr.SetInt32(1, od.LineNumber);
                    sdr.SetInt32(2, od.ProductId);
                    sdr.SetInt32(3, od.Quantity);
                    sdr.SetDecimal(4, od.Price);

                    yield return(sdr);
                }
            }
示例#24
0
 public override void Set(SqlDataRecord record, int ordinal, decimal value)
 {
     record.SetDecimal(ordinal, value);
 }
        public void AddParameters(IDbCommand command, SqlMapper.Identity identity)
        {
            var sqlCommand = (SqlCommand)command;

            sqlCommand.CommandType = CommandType.StoredProcedure;
            var items = new List <SqlDataRecord>();

            foreach (var param in _parameters)
            {
                var rec = new SqlDataRecord(
                    _programmeTypeMetaData,
                    _standardCodeMetaData,
                    _frameworkCodeMetaData,
                    _pathwayCodeMetaData,
                    _ukprnMetaData,
                    _learnRefNumberMetaData,
                    _transferSenderAccountIdMetaData,
                    _employerAccountIdMetaData,
                    _paymentStatusMetaData,
                    _negotiatedPriceMetaData,
                    _startDateMetaData,
                    _endDateMetaData,
                    _effectiveFromMetaData,
                    _effectiveToMetaData,
                    _ulnMetaData);

                if (param.ProgrammeType.HasValue)
                {
                    rec.SetInt32(0, param.ProgrammeType.Value);
                }
                if (param.StandardCode.HasValue)
                {
                    rec.SetInt64(1, param.StandardCode.Value);
                }
                if (param.FrameworkCode.HasValue)
                {
                    rec.SetInt32(2, param.FrameworkCode.Value);
                }
                if (param.PathwayCode.HasValue)
                {
                    rec.SetInt32(3, param.PathwayCode.Value);
                }
                rec.SetInt64(4, param.Ukprn);
                rec.SetString(5, param.LearnerReferenceNumber);
                if (param.TransferSenderAccountId.HasValue)
                {
                    rec.SetInt64(6, param.TransferSenderAccountId.Value);
                }
                rec.SetInt64(7, param.EmployerAccountId);
                rec.SetInt32(8, param.PaymentStatus);
                rec.SetDecimal(9, param.NegotiatedPrice);
                rec.SetDateTime(10, param.StartDate);
                rec.SetDateTime(11, param.EndDate);
                rec.SetDateTime(12, param.EffectiveFrom);
                if (param.EffectiveTo != null)
                {
                    rec.SetDateTime(13, param.EffectiveTo.Value);
                }
                rec.SetInt64(14, param.Uln);

                items.Add(rec);
            }

            var p = sqlCommand.Parameters.Add("@commitments", SqlDbType.Structured);

            p.Direction = ParameterDirection.Input;
            p.TypeName  = "[dbo].[CommitmentType]";
            p.Value     = items;
        }
        void SetValue(SqlDataRecord record, int position, Type type, object value)
        {
            switch (type.Name)
            {
            case "Int16":
                record.SetInt16(position, (short)value);
                break;

            case "Int32":
                record.SetInt32(position, (int)value);
                break;

            case "Int64":
                record.SetInt64(position, (long)value);
                break;

            case "Boolean":
                record.SetBoolean(position, (bool)value);
                break;

            case "Byte":
                record.SetByte(position, (byte)value);
                break;

            case "Bytes[]":
                record.SetBytes(position, 0, (byte[])value, 0, ((byte[])value).Length);
                break;

            case "Char":
                record.SetChar(position, (char)value);
                break;

            case "Char[]":
                record.SetChars(position, 0, (char[])value, 0, ((char[])value).Length);
                break;

            case "DateTime":
                record.SetDateTime(position, (DateTime)value);
                break;

            case "Decimal":
                record.SetDecimal(position, (decimal)value);
                break;

            case "Double":
                record.SetDouble(position, (double)value);
                break;

            case "Guid":
                record.SetGuid(position, (Guid)value);
                break;

            case "String":
                record.SetSqlString(position, (string)value);
                break;

            default:
                record.SetValue(position, value);
                break;
            }
        }
示例#27
0
        public static void GetTable(string connectionString, string tableName)
        {
            var metaCount  = 0;
            var fieldNames = new List <string>();

            //--use: "Provider=Microsoft.SQLSERVER.MOBILE.OLEDB.3.0;OLE DB Services=-4;" for SQL Compact 3.1
            //--use: "Provider=Microsoft.SQLSERVER.CE.OLEDB.3.5;OLE DB Services=-4;" for SQL Compact 3.5 SP2
            //--use: "Provider=Microsoft.SQLSERVER.CE.OLEDB.4.0;OLE DB Services=-4;" for SQL Compact 4.0
            using (var conn = new OleDbConnection(connectionString))
            {
                conn.Open();

                // determine the number of SqlMetadata parameters needed
                using (var cmd = new OleDbCommand())
                {
                    cmd.CommandText = "SELECT COLUMN_NAME, DATA_TYPE FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = @p1 ORDER BY ORDINAL_POSITION";
                    cmd.Parameters.Add(new OleDbParameter("@p1", OleDbType.VarWChar, 128));
                    cmd.Parameters[0].Value = tableName;
                    cmd.Connection          = conn;
                    using (var rdr = cmd.ExecuteReader())
                    {
                        while (rdr != null && rdr.Read())
                        {
                            //if (SqlContext.Pipe != null) SqlContext.Pipe.Send(rdr[1].ToString());
                            if (rdr[1].ToString() == "ntext" || rdr[1].ToString() == "image")
                            {
                                continue;
                            }
                            metaCount++;
                            fieldNames.Add("[" + rdr[0] + "]");
                        }
                    }
                }
                if (metaCount == 0)
                {
                    if (SqlContext.Pipe != null)
                    {
                        SqlContext.Pipe.Send("No data found, or table does not exist");
                    }
                    return;
                }

                //Get the meta data for the fields
                var metadata = GetMetaData(metaCount, tableName, conn);
                var record   = new SqlDataRecord(metadata);
                var fields   = new System.Text.StringBuilder();
                foreach (var field in fieldNames)
                {
                    fields.Append(field);
                    fields.Append(", ");
                }
                fields.Remove(fields.Length - 2, 2);

                using (var cmd = new OleDbCommand("SELECT " + fields + " FROM [" + tableName + "]", conn))
                {
                    using (var rdr = cmd.ExecuteReader())
                    {
                        if (SqlContext.Pipe != null)
                        {
                            //SqlContext.Pipe.Send(cmd.CommandText);
                            SqlContext.Pipe.SendResultsStart(record);
                            while (rdr != null && rdr.Read())
                            {
                                for (var i = 0; i < rdr.FieldCount; i++)
                                {
                                    if (rdr.IsDBNull(i))
                                    {
                                        record.SetDBNull(i);
                                    }
                                    else
                                    {
                                        if (metadata[i].SqlDbType == SqlDbType.Bit)
                                        {
                                            record.SetBoolean(i, rdr.GetBoolean(i));
                                        }
                                        if (metadata[i].SqlDbType == SqlDbType.TinyInt)
                                        {
                                            record.SetByte(i, rdr.GetByte(i));
                                        }
                                        if (metadata[i].SqlDbType == SqlDbType.SmallInt)
                                        {
                                            record.SetInt16(i, rdr.GetInt16(i));
                                        }
                                        if (metadata[i].SqlDbType == SqlDbType.Int)
                                        {
                                            record.SetInt32(i, rdr.GetInt32(i));
                                        }
                                        if (metadata[i].SqlDbType == SqlDbType.BigInt)
                                        {
                                            record.SetInt64(i, rdr.GetInt64(i));
                                        }
                                        if (metadata[i].SqlDbType == SqlDbType.NVarChar || metadata[i].SqlDbType == SqlDbType.NChar)
                                        {
                                            record.SetString(i, rdr.GetString(i));
                                        }
                                        if (metadata[i].SqlDbType == SqlDbType.UniqueIdentifier)
                                        {
                                            record.SetGuid(i, rdr.GetGuid(i));
                                        }
                                        if (metadata[i].SqlDbType == SqlDbType.Timestamp || metadata[i].SqlDbType == SqlDbType.Binary || metadata[i].SqlDbType == SqlDbType.VarBinary)
                                        {
                                            var tsbuffer = (byte[])rdr[i];
                                            record.SetBytes(i, 0, tsbuffer, 0, tsbuffer.Length);
                                        }
                                        if (metadata[i].SqlDbType == SqlDbType.DateTime)
                                        {
                                            record.SetDateTime(i, rdr.GetDateTime(i));
                                        }
                                        if (metadata[i].SqlDbType == SqlDbType.Money || metadata[i].SqlDbType == SqlDbType.Decimal)
                                        {
                                            record.SetDecimal(i, rdr.GetDecimal(i));
                                        }
                                        if (metadata[i].SqlDbType == SqlDbType.Float)
                                        {
                                            record.SetDouble(i, rdr.GetDouble(i));
                                        }
                                        if (metadata[i].SqlDbType == SqlDbType.Real)
                                        {
                                            record.SetSqlSingle(i, Convert.ToSingle(rdr.GetValue(i)));
                                        }
                                    }
                                }
                                //Send the completed record..
                                SqlContext.Pipe.SendResultsRow(record);
                            }
                            if (rdr != null)
                            {
                                rdr.Close();
                            }
                            SqlContext.Pipe.SendResultsEnd();
                        }
                    }
                }
                conn.Close();
            }
        }
 public override void Set(SqlDataRecord record, int ordinal, decimal value)
 {
     EnsureArg.IsNotNull(record, nameof(record));
     record.SetDecimal(ordinal, value);
 }