示例#1
0
        protected override void EmitSelectClause(SQL.SelectClause clause)
        {
            var topClause = _topClauses.Count > 0 ? _topClauses.Peek() : null;

            if (topClause != null)
            {
                AppendFormat("top({0})", topClause.IsPercent ? topClause.Quota.ToString() : ((int)topClause.Quota).ToString());
                if (topClause.IsPercent)
                {
                    AppendFormat(" percent");
                }

                if (topClause.WithTies)
                {
                    AppendFormat(" with ties");
                }
            }

            base.EmitSelectClause(clause);
        }
示例#2
0
 protected virtual void EmitSelectClause(SelectClause clause)
 {
     NewLine();
     Indent();
     if (clause.Distinct)
     {
         AppendFormat("{0} ", Keywords.Distinct);
     }
     if (clause.Columns.Count == 0)
     {
         Append(Keywords.Star);
     }
     for (int index = 0; index < clause.Columns.Count; index++)
     {
         if (index > 0)
         {
             EmitListSeparator();
         }
         EmitColumnExpression(clause.Columns[index]);
     }
 }
示例#3
0
        private SQLModel.SelectClause TranslateReturnClause(TranslationContext context, Node returnClause)
        {
            var result = new SQLModel.SelectClause();
            result.Distinct = returnClause.GetAttribute<Boolean>("distinct", true);
            var expression = returnClause.Children.Single(n => n.Name == "expression");
            if (expression.NodeType.GetLocalName() == "Tuple")
            {
                foreach (var element in expression.Children)
                {
                    var column =
                        new SQLModel.ColumnExpression
                        (
                            (Model.Expression)context.TranslateNode((ASTNode)element.Children.Single(n => n.Name == "value")),
                            element.GetAttribute<String>("name")
                        );
                }
            }

            return result;
        }