public void BindParameters(OracleCommand cmd, List <PoolEntry <object[]> > rows)
        {
            cmd.ArrayBindCount = rows.Count;
            var paramIndex = 0;

            foreach (var column in _columnNameToMetadataIndexMap)
            {
                object[] arr;
                if (column.Value >= 0)
                {
                    arr = _cachedParamsArrayList[column.Value];
                    var rowIndex = 0;
                    foreach (var row in rows)
                    {
                        arr[rowIndex++] = UseNativeTypeConvertor
                            ? OracleUtils.GetNativeValue(_sourceValueToParamValueDelegate(column.Value, row.Value))
                            : _sourceValueToParamValueDelegate(column.Value, row.Value);
                    }
                }
                else
                {
                    arr = null;
                }

                cmd.Parameters[paramIndex++].Value = arr;
            }
        }
Ejemplo n.º 2
0
        private byte[] ReadFromOracle(/*Hash hash, */ string url)
        {
            if (url.StartsWith(interopTag))
            {
                url = url.Substring(interopTag.Length);
                var args = url.Split('/');

                var chainName = args[0];
                args = args.Skip(1).ToArray();

                switch (chainName)
                {
                case "neo":
                    return(OracleUtils.ReadNEO(args));

                default:
                    throw new OracleException("invalid oracle chain: " + chainName);
                }
            }
            else
            if (url.StartsWith(priceTag))
            {
                url = url.Substring(interopTag.Length);
                var symbols = url.Split('/');
                if (symbols.Length != 2)
                {
                    throw new OracleException("invalid oracle price request");
                }

                var baseSymbol  = symbols[0];
                var quoteSymbol = symbols[1];

                if (cryptoCompareAPIKey != null)
                {
                    var price = CryptoCompareUtils.GetCoinRate(baseSymbol, quoteSymbol, cryptoCompareAPIKey);
                    var val   = UnitConversion.ToBigInteger(price, 8);
                    return(val.ToSignedByteArray());
                }

                throw new OracleException("No support for prices");
            }
            else
            {
                throw new OracleException("unknown oracle protocol");
            }
        }
 public override string ValueToSqlLiteralText(object obj)
 {
     return(OracleUtils.ValueToSqlLiteralText(obj));
 }
 public override object GetNativeValue(object value)
 {
     return(OracleUtils.GetNativeValue(value));
 }