예제 #1
0
        private void InjectTableVariables(StringBuilder sql, BuildArgs buildArgs, bool skipTimestampColumn)
        {
            if (buildArgs.Executable == null)
            {
                Throw(QueryTalkExceptionType.NullExecutableInnerException, null, null);
            }

            foreach (var argument in (buildArgs.Executable.Arguments).Where(a => a.DT.IsTableVariable()))
            {
                var view = (View)argument.Value;

                sql.NewLine(Text.Declare).S()
                .Append(argument.ParamName)
                .Append(Text._As_)
                .Append(Text.Table).S()
                .NewLine(Text.LeftBracket);

                BeginTableChainer.BuildFromView(sql, view, skipTimestampColumn);

                sql.NewLine(Text.RightBracket)
                .Terminate();

                if (view.RowCount > 0)
                {
                    BeginTableChainer.Fill(sql, argument.ParamName, view);
                }
            }
        }
예제 #2
0
 /// <summary>
 /// Declares a table variable using the data class type.
 /// </summary>
 /// <param name="prev">A predecessor object.</param>
 /// <param name="table">The name of a table variable.</param>
 /// <param name="skipTimestampColumn">If true, then timestamp column is not included. (Used only with DbRow types.)</param>
 /// <typeparam name="T">A type of a data class.</typeparam>
 public static BeginTableChainer DesignTable <T>(this IAny prev, string table, bool skipTimestampColumn = false)
 {
     return(BeginTableChainer.DesingByType <T>((Chainer)prev, table, skipTimestampColumn));
 }