Ejemplo n.º 1
0
        // initalize by value
        private void Initialize(DeclareArgument value)
        {
            var root = GetRoot();

            chainMethod = Text.Method.Declare;

            CheckAndThrow();

            var dataType = Mapping.ClrMapping[value.ArgType].DefaultDataType;
            var variable = new Variable(0, _variableName, dataType, IdentifierType.SqlVariable);

            root.TryAddVariableOrThrow(variable, chainMethod, false);

            Build = (buildContext, buildArgs) =>
            {
                var sql = Text.GenerateSql(50)
                          .NewLine(Text.Declare).S()
                          .Append(_variableName).S()
                          .Append(Text.As).S()
                          .Append(dataType.Build())
                          .Terminate();

                sql.NewLine(Text.Set).S()
                .Append(_variableName)
                .Append(Text._Equal_)
                .Append(value.Build(buildContext, buildArgs));

                sql.Terminate();

                return(sql.ToString());
            };
        }
Ejemplo n.º 2
0
        internal DeclareChainer(Chainer prev, string variableName, DeclareArgument value)
            : base(prev)
        {
            if (Value.IsNull(value) || Value.IsNull(value.Original))
            {
                Throw(QueryTalkExceptionType.ArgumentNull,
                      String.Format("variable = {0}{1}   value = null/NULL", variableName, Environment.NewLine),
                      Text.Method.Declare);
            }

            _variableName = variableName;
            Initialize(value);
        }