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)); }
/// <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); }