コード例 #1
0
        public object Select(RawTableJoinRow rows)
        {
            var selectExpression   = ParseAsSelect(_FunctionCall.Sql);
            var querySpecification = (SqlQuerySpecification)selectExpression.SelectSpecification.QueryExpression;

            var db      = (( MemoryDbConnection )_RawData.Command.Connection).GetMemoryDatabase( );
            var batch   = new MemoryDbDataReader.ResultBatch(  );
            var rawData = new RawData(_RawData.Command, batch);

            rawData.RawRowList.Add(rows);
            var statement = new ExecuteQueryStatement(db, _RawData.Command);

            statement.InitializeFields(batch, querySpecification.SelectClause.Children.ToList(  ), rawData);
            new QueryResultBuilder(rawData, false).AddData(batch);

            var row = batch.ResultRows[0];

            for (int fieldIndex = 0; fieldIndex < batch.Fields.Count; fieldIndex++)
            {
                if (row[fieldIndex] != null && row[fieldIndex] is DBNull == false)
                {
                    _DbType     = (DbType)Enum.Parse(typeof(DbType), batch.Fields[fieldIndex].DbType, true);
                    _ReturnType = batch.Fields[fieldIndex].NetType;
                    return(row[fieldIndex]);
                }
            }
            return(null);
        }
コード例 #2
0
        private bool EvaluateExpression(List <RawTableRow> rawDataRows, SqlExistsBooleanExpression expression)
        {
            bool hasRows;

            using (var reader = new MemoryDbDataReader(CommandBehavior.SingleResult))
            {
                _Command.DataReader = reader;
                var tables = ((MemoryDbConnection )_Command.Connection).GetMemoryDatabase( ).Tables;

                var batch = new ExecuteQueryStatement(_Database, _Command).Execute(tables, _RawData, ( SqlQuerySpecification )expression.QueryExpression);
                hasRows             = batch.ResultRows.Any();
                _Command.DataReader = null;
            }

            return(hasRows);
        }
コード例 #3
0
        private MemoryDbDataReader.ResultBatchWithRawRows ExecuteSelect(SqlSelectStatement selectExpression,
                                                                        List <RawTableRow> rows)
        {
            var querySpecification = ( SqlQuerySpecification )selectExpression.SelectSpecification.QueryExpression;
            var db      = (( MemoryDbConnection )_RawData.Command.Connection).GetMemoryDatabase( );
            var command = new MemoryDbCommand(_RawData.Command.Connection);
            var batch   = new MemoryDbDataReader.ResultBatchWithRawRows( );
            var rawData = new RawData(command, batch)
            {
                RawRowList     = _RawData.RawRowList,
                TableAliasList = _RawData.TableAliasList,
                SortOrder      = selectExpression.SelectSpecification.OrderByClause.Items
            };
            var statement = new ExecuteQueryStatement(db, command);

            statement.InitializeFields(batch, querySpecification.SelectClause.Children.ToList( ), rawData);
            if (string.IsNullOrWhiteSpace(_PartitionField) == false)
            {
                AddWhereParameter(batch, rawData, rows, querySpecification.WhereClause);
            }
            new QueryResultBuilder(rawData).AddData(batch);
            return(batch);
        }