Example #1
0
 protected virtual void Visit <TResult>(UnionStatement <TResult> statement)
 {
     Visit(statement.Left);
     WriteLine();
     WriteIndentation();
     Write("UNION");
     WriteLine();
     Visit(statement.Right);
     WriteLine();
 }
Example #2
0
        protected virtual void VisitUnionStatement(UnionStatement statement)
        {
            VisitStatement(statement.First);

            State.Write(Symbols.UNION);
            if (statement.All)
            {
                State.Write(Symbols.ALL);
            }

            VisitStatement(statement.Second);
        }
Example #3
0
		public void Visit(UnionStatement unionStatement)
		{
			if(unionStatement.TableAlias != null && unionStatement.TableAlias != string.Empty)
				_Query.Append(" ( ");

			foreach(SelectStatement query in unionStatement.SelectExpressions)
			{
				query.Accept(this);

				if (unionStatement.SelectExpressions.IndexOf(query) != unionStatement.SelectExpressions.Count - 1)
					_Query.Append("UNION ");
			}

			if(unionStatement.TableAlias != null && unionStatement.TableAlias != string.Empty)
				_Query.Append(String.Concat(" ) AS ", unionStatement.TableAlias, " "));
		}
Example #4
0
        public UnionStatement Union(params StatementBase[] statments)
        {
            UnionStatement result = null;

            foreach (var statment in statments)
            {
                if (result == null)
                {
                    result = new UnionStatement(this, statment);
                }
                else
                {
                    result.Union(statment);
                }
            }
            return(result);
        }
Example #5
0
        public UnionStatement ParseUnionSatement(UnionStatementContext node)
        {
            UnionStatement statement = new UnionStatement();

            UnionType unionType = UnionType.UNION;

            foreach (var child in node.children)
            {
                if (child is TerminalNodeImpl terminalNode)
                {
                    int type = terminalNode.Symbol.Type;

                    switch (type)
                    {
                    case TSqlParser.ALL:
                        unionType = UnionType.UNION_ALL;
                        break;

                    case TSqlParser.INTERSECT:
                        unionType = UnionType.INTERSECT;
                        break;

                    case TSqlParser.EXCEPT:
                        unionType = UnionType.EXCEPT;
                        break;
                    }
                }
                else if (child is QuerySpecificationContext ||
                         child is QuerySpecificationNointoContext)
                {
                    statement.Type            = unionType;
                    statement.SelectStatement = this.ParseQuerySpecification(child as ParserRuleContext);
                }
            }

            return(statement);
        }