예제 #1
0
        internal gsWhereTermBase GetWhereTerm(ExistsPredicate existsPredicate, gsExistsOrNotExists existsOrNotExists)
        {
            gsWhereTermExistsOrNotExists whereTerm = new gsWhereTermExistsOrNotExists();

            whereTerm.ExistsType = existsOrNotExists;

            if (existsPredicate.Subquery.QueryExpression is QuerySpecification)
            {
                gsSelectQuery subQry = new gsSelectQuery();
                subQry.QryName      = $"subQry{gsSelectQuery.GetNextID()}";
                whereTerm.QueryName = subQry.QryName;

                QuerySpecification qrySpec = existsPredicate.Subquery.QueryExpression as QuerySpecification;

                gsSelectQueryParser qryParser = new gsSelectQueryParser();
                qryParser.ProcessQuerySpecification(qrySpec, subQry);

                whereTerm.Sql = subQry.ToString();
            }
            else
            {
                throw new NotImplementedException($"QuerySpecification {existsPredicate.Subquery.QueryExpression.GetType().Name} not supported");
            }

            return(whereTerm);
        }
예제 #2
0
        internal gsWhereTermBase GetWhereTerm(InPredicate inPredicate, bool isNotIn)
        {
            gsWhereTermIn whereTerm  = new gsWhereTermIn();
            string        subQryName = $"subQry{gsSelectQuery.GetNextID()}";

            whereTerm.InType = isNotIn ? gsInOrNotIn.NotIn : gsInOrNotIn.In;

            whereTerm.Expression = gsScalarExpressionParserFactory.CreateParser(inPredicate.Expression, null).Parse();

            if (inPredicate.Subquery != null)
            {
                gsSelectQuery subQry = new gsSelectQuery();
                whereTerm.QueryName = subQry.QryName = subQryName;

                QuerySpecification qrySpec = inPredicate.Subquery.QueryExpression as QuerySpecification;

                gsSelectQueryParser qryParser = new gsSelectQueryParser();
                qryParser.ProcessQuerySpecification(qrySpec, subQry);

                whereTerm.Sql = subQry.ToString();
            }
            else if (inPredicate.Values.Count > 0)
            {
                List <string> values = new List <string>();

                foreach (ScalarExpression val in inPredicate.Values)
                {
                    string valueStr = Convert.ToString(gsScalarExpressionParserFactory.CreateParser(val, null).Parse().Value);
                    values.Add(valueStr);
                }

                whereTerm.values = values;
            }
            else
            {
                throw new NotImplementedException("InPredicate type not supported");
            }

            return(whereTerm);
        }
예제 #3
0
        internal gsFromTerm GetTable(QueryDerivedTable queryDerivedTable)
        {
            gsSubQueryFromTerm table = new gsSubQueryFromTerm();

            table.TableAlias = Convert.ToString(queryDerivedTable.Alias.Value);

            if (queryDerivedTable.QueryExpression is QuerySpecification)
            {
                gsSelectQuery      subQry  = new gsSelectQuery();
                QuerySpecification qrySpec = queryDerivedTable.QueryExpression as QuerySpecification;

                gsSelectQueryParser qryParser = new gsSelectQueryParser();
                qryParser.ProcessQuerySpecification(qrySpec, subQry);

                table.SubQuery = subQry;
            }
            else
            {
                throw new NotImplementedException($"QuerySpecification {queryDerivedTable.QueryExpression.GetType().Name} not supported");
            }

            return(table);
        }
예제 #4
0
        public override gsSelectColumn Parse()
        {
            gsSubQueryColumn subQryCol = new gsSubQueryColumn();

            subQryCol.ColumnAlias = ColumnAlias;

            if (_ScalarExpression.QueryExpression is QuerySpecification)
            {
                gsSelectQuery      subQry  = new gsSelectQuery();
                QuerySpecification qrySpec = _ScalarExpression.QueryExpression as QuerySpecification;

                gsSelectQueryParser qryParser = new gsSelectQueryParser();
                qryParser.ProcessQuerySpecification(qrySpec, subQry);

                subQryCol.SubQuery = subQry;
            }
            else
            {
                throw new NotImplementedException($"QuerySpecification {_ScalarExpression.QueryExpression.GetType().Name} not supported");
            }

            return(subQryCol);
        }