예제 #1
0
        public override SqlExpression VisitConcatenation(PlSqlParser.ConcatenationContext context)
        {
            var exps = context.additiveExpression().Select(Visit).ToArray();

            if (exps.Length == 1)
            {
                return(exps[0]);
            }

            return(SqlExpression.Function("CONCAT", exps));
        }
예제 #2
0
        /// <summary>
        /// concatenation :
        ///       model_expression (AT (LOCAL | TIME ZONE concatenation) | interval_expression)?
        ///     | concatenation op = (ASTERISK | SOLIDUS) concatenation
        ///     | concatenation op = (PLUS_SIGN | MINUS_SIGN) concatenation
        ///     | concatenation BAR BAR concatenation
        ///     ;
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        public override object VisitConcatenation([NotNull] PlSqlParser.ConcatenationContext context)
        {
            object result         = null;
            var    concatenations = context.concatenation();

            var model_expression = context.model_expression();

            if (model_expression != null)
            {
                result = VisitModel_expression(model_expression);
                if (context.AT() != null)
                {
                    Stop();
                    if (concatenations != null && concatenations.Length == 1)
                    {
                        Stop();
                        //result =
                    }
                    else
                    {
                        Stop();
                        var interval_expression = context.interval_expression();
                        if (interval_expression != null)
                        {
                            //result =
                        }
                    }
                }
            }
            else
            {
                Stop();
                result = new OBinaryExpression()
                {
                    Left     = VisitConcatenation(concatenations[0]) as OCodeExpression,
                    Operator = context.op.ConvertToOperator(),
                    Right    = VisitConcatenation(concatenations[1]) as OCodeExpression
                };
            }

            Debug.Assert(result != null);
            return(result);
        }