Пример #1
0
        private void Initialize(DataType dataType)
        {
            var root = GetRoot();

            chainMethod = Text.Method.Declare;

            CheckAndThrow();
            TryThrow(dataType.Exception);

            var variable = new Variable(0, _variableName, dataType, IdentifierType.SqlVariable);

            root.TryAddVariableOrThrow(variable, chainMethod, false);

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

                return(sql.ToString());
            };
        }
        private void Initialize(NonSelectColumnArgument column, DataType dataTypeDef)
        {
            IsNullable = null;
            CheckNullAndThrow(Arg(() => column, column));
            TryThrow(dataTypeDef.Exception);
            Prev.GetPrev <BeginTableChainer>().SetHasColumns();

            Build = (buildContext, buildArgs) =>
            {
                var sql = Text.GenerateSql(300);
                sql.AppendLine();
                sql.Append(Text.TwoSpaces);

                if (!(Prev is BeginTableChainer && !((BeginTableChainer)Prev).IsDesignedByType))
                {
                    sql.Append(Text.Comma);
                }

                sql.Append(column.Build(buildContext, buildArgs)).S()
                .Append(dataTypeDef.Build());

                TryThrow(column.Exception);

                if (Identity != null)
                {
                    sql.S().Append(Text.Identity)
                    .EncloseLeft()
                    .Append(Identity.Seed)
                    .AppendComma()
                    .Append(Identity.Increment)
                    .EncloseRight();
                }

                if (IsNullable == true)
                {
                    sql.S().Append(Text.Null);
                }
                else if (IsNullable == false)
                {
                    sql.S().Append(Text.NotNull);
                }

                if (Check != null)
                {
                    sql.S().Append(Text.Check)
                    .EncloseLeft().Append(Check.Build(buildContext, buildArgs)).EncloseRight();
                    TryThrow(buildContext);
                }

                if (Default != null)
                {
                    sql.S().Append(Text.Default)
                    .EncloseLeft().Append(Default.Build(buildContext, buildArgs)).EncloseRight();
                    TryThrow(buildContext);
                }

                return(sql.ToString());
            };
        }
Пример #3
0
        // Builds param declaration for data type and name type.
        internal string BuildDeclaration()
        {
            if (DT.IsDataType())
            {
                return(DataType.Build());
            }
            else if (DT.IsNameType())
            {
                var sql = NameType.Sql;

                // user-defined table type (add READONLY)
                if (DT == Wall.DT.Udtt)
                {
                    sql += String.Format(" {0}", Text.Readonly);
                }

                return(sql);
            }

            return(null);
        }
Пример #4
0
 private static void AppendOuterColumn(StringBuilder sql, DataType dataType, int index, string columnName)
 {
     AppendColumn(sql, String.Format("CAST({0}{1} AS {2})", Text.ColumnShortName, index,
                                     dataType.Build()), columnName);
 }