Пример #1
0
        public override Argument VisitFldlenExpression(CalcParser.FldlenExpressionContext context)
        {
            Argument arg = Visit(context.expression());

            if (arg.IsNull)
            {
                return(Argument.Null);
            }

            if (arg.IsDouble || arg.IsDate)
            {
                throw new ArgumentCastException("Argument of $FLDLEN macro should not be a number or a date");
            }

            string   fieldName = arg.ToString();
            Argument sArg      = this._resolver.ResolveFieldValue(fieldName);

            if (sArg.IsNull)
            {
                return(new Argument(0));
            }

            int length = sArg.ToString().Length;

            return(new Argument(length));
        }
Пример #2
0
        public override Query VisitFldlenExpression(CalcParser.FldlenExpressionContext context)
        {
            Query  fieldQuery = Visit(context.expression());
            string fieldName  = fieldQuery.Text;

            FieldInfo fieldInfo = this._metadataResolver.GetField(fieldName);
            string    queryText = this._dbTranslator.FieldLength(fieldInfo);

            return(new Query(queryText, ResultType.Number));
        }