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