public override void Accept(ICommandContext ctx)
        {
            Object value = ctx.GetArg(_names[0]);
            Type   type  = (value != null ? value.GetType() : null);
            InternalValueAndType valueAndType = new InternalValueAndType();

            valueAndType.TargetValue = value;
            valueAndType.TargetType  = type;
            SetupValueAndType(valueAndType);

            if (_blockNullParameter && valueAndType.TargetValue == null)
            {
                ThrowBindOrEmbeddedParameterNullValueException(valueAndType);
            }
            if (!IsInScope())
            {
                // Main Root
                // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                // [UnderReview]: Should I make an original exception instead of this exception?
                // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                // if (valueAndType.TargetValue != null && valueAndType.TargetValue.ToString().IndexOf("?") > -1) {
                //     throw new org.seasar.framework.exception.SRuntimeException("EDAO0023");
                // }
                ctx.AddSql(valueAndType.TargetValue.ToString());
            }
            else
            {
                if (IsInScope() && typeof(System.Collections.IList).IsAssignableFrom(valueAndType.TargetType))
                {
                    System.Collections.IList list = valueAndType.TargetValue as System.Collections.IList;
                    Array array = new Object[list.Count];
                    list.CopyTo(array, 0);
                    EmbedArray(ctx, array);
                }
                else if (IsInScope() && valueAndType.TargetType.IsArray)
                {
                    EmbedArray(ctx, valueAndType.TargetValue);
                }
                else
                {
                    // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    // [UnderReview]: Should I make an original exception instead of this exception?
                    // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                    // if (valueAndType.TargetValue != null && valueAndType.TargetValue.ToString().IndexOf("?") > -1) {
                    //     throw new org.seasar.framework.exception.SRuntimeException("EDAO0023");
                    // }
                    ctx.AddSql(valueAndType.TargetValue.ToString());
                }
            }
            if (valueAndType.IsValidRearOption())
            {
                ctx.AddSql(valueAndType.BuildRearOptionOnSql());
            }
        }
        public override void Accept(ICommandContext ctx)
        {
            object value = ctx.GetArg(_names[0]);
            Type   type  = (value != null ? value.GetType() : null);
            InternalValueAndType valueAndType = new InternalValueAndType();

            valueAndType.TargetValue = value;
            valueAndType.TargetType  = type;
            SetupValueAndType(valueAndType);

            if (_blockNullParameter && valueAndType.TargetValue == null)
            {
                ThrowBindOrEmbeddedParameterNullValueException(valueAndType);
            }
            if (!IsInScope())
            {
                // Main Root
                ctx.AddSql(valueAndType.TargetValue, valueAndType.TargetType, _expression.Replace('.', '_'));
            }
            else
            {
                if (typeof(System.Collections.IList).IsAssignableFrom(valueAndType.TargetType))
                {
                    System.Collections.IList list = valueAndType.TargetValue as System.Collections.IList;
                    Array array = new Object[list.Count];
                    list.CopyTo(array, 0);
                    BindArray(ctx, array);
                }
                else if (valueAndType.TargetType.IsArray)
                {
                    BindArray(ctx, valueAndType.TargetValue);
                }
                else
                {
                    ctx.AddSql(valueAndType.TargetValue, valueAndType.TargetType, _expression.Replace('.', '_'));
                }
            }
            if (valueAndType.IsValidRearOption())
            {
                ctx.AddSql(valueAndType.BuildRearOptionOnSql());
            }
        }