public static void SPToCoreScan() { var dt_SpList = new DataTable(); var dt_SpParam = new DataTable(); var dt_SpResult = new DataTable(); Console.WriteLine($"{DateTime.Now.ToString("yyyy-MM-dd HH':'mm':'ss")} STEP 1 - GET STORED PROCEDURE LIST"); dt_SpList = Get_StoreProcedure_List(); Console.WriteLine($"{DateTime.Now.ToString("yyyy-MM-dd HH':'mm':'ss")} STEP 2 - PROCESS STORED PROCEDURE"); Console.WriteLine($"{DateTime.Now.ToString("yyyy-MM-dd HH':'mm':'ss")} STEP 2 - Total Stored Procedure: {dt_SpList.Rows.Count}"); int i = 1; string _schema = ""; string _sp = ""; foreach (DataRow r in dt_SpList.Rows) { _schema = r["ROUTINE_SCHEMA"].ToString(); _sp = r["ROUTINE_NAME"].ToString(); dt_SpParam = Get_StoreProcedure_Param(_schema, _sp); dt_SpResult = Get_StoreProcedure_Result(_schema, _sp); Console.WriteLine($"{DateTime.Now.ToString("yyyy-MM-dd HH':'mm':'ss")} STEP 2 - {i} / {dt_SpList.Rows.Count} ==> \"{r["ROUTINE_NAME"]}\""); var pList = new List <SpParam>(); foreach (DataRow par in dt_SpParam.Rows) { var _p = new SpParam() { Param = par["Parameter"].ToString().Replace("@", ""), Type = SP_GetType(par["Type"].ToString(), (bool)par["is_nullable"]), Length = (par["Length"].GetType().Name == "DBNull" ? null : par["Length"].ToString()), Precision = (par["Precision"].GetType().Name == "DBNull" ? null : par["Precision"].ToString()), Scale = (par["Scale"].GetType().Name == "DBNull" ? null : par["Scale"].ToString()), Order = (par["Order"].GetType().Name == "DBNull" ? null : par["Order"].ToString()), isOutput = (bool)par["is_Output"], isNullable = (bool)par["is_nullable"], Collation = (par["Collation"].GetType().Name == "DBNull" ? null : par["Collation"].ToString()), DbType = SP_GetDbType(par["Type"].ToString()), sql_Param = (par["Parameter"].GetType().Name == "DBNull" ? null : par["Parameter"].ToString()), sql_Type = (par["Type"].GetType().Name == "DBNull" ? null : par["Type"].ToString()), sql_Length = (par["Length"].GetType().Name == "DBNull" ? null : par["Length"].ToString()), sql_Prec = (par["Precision"].GetType().Name == "DBNull" ? null : par["Precision"].ToString()), sql_Scale = (par["Scale"].GetType().Name == "DBNull" ? null : par["Scale"].ToString()), sql_Order = (par["Order"].GetType().Name == "DBNull" ? null : par["Order"].ToString()), sql_isOutput = (par["is_Output"].GetType().Name == "DBNull" ? null : par["is_Output"].ToString()), sql_isNullable = (par["is_nullable"].GetType().Name == "DBNull" ? null : par["is_nullable"].ToString()), sql_Collation = (par["Collation"].GetType().Name == "DBNull" ? null : par["Collation"].ToString()), }; pList.Add(_p); } var rList = new List <SpResultElement>(); int rCounter = 0; foreach (DataRow res in dt_SpResult.Rows) { var _r = new SpResultElement() { Name = (string.IsNullOrEmpty(res["name"].ToString()) ? $"Col{rCounter}" : res["name"].ToString()), Type = SP_GetType(res["system_type_name"].ToString(), (bool)res["is_nullable"]), Length = (res["max_length"].GetType().Name == "DBNull" ? null : res["max_length"].ToString()), Precision = (res["precision"].GetType().Name == "DBNull" ? null : res["precision"].ToString()), Scale = (res["scale"].GetType().Name == "DBNull" ? null : res["scale"].ToString()), Order = (res["column_ordinal"].GetType().Name == "DBNull" ? null : res["column_ordinal"].ToString()), isNullable = (bool)res["is_nullable"], Collation = (res["collation_name"].GetType().Name == "DBNull" ? null : res["collation_name"].ToString()), sql_Name = (res["name"].GetType().Name == "DBNull" ? null : res["name"].ToString()), sql_Type = (res["system_type_name"].GetType().Name == "DBNull" ? null : res["system_type_name"].ToString()), sql_Length = (res["max_length"].GetType().Name == "DBNull" ? null : res["max_length"].ToString()), sql_Precision = (res["precision"].GetType().Name == "DBNull" ? null : res["precision"].ToString()), sql_Scale = (res["scale"].GetType().Name == "DBNull" ? null : res["scale"].ToString()), sql_Order = (res["column_ordinal"].GetType().Name == "DBNull" ? null : res["column_ordinal"].ToString()), sql_isNullable = (res["is_nullable"].GetType().Name == "DBNull" ? null : res["is_nullable"].ToString()), sql_Collation = (res["collation_name"].GetType().Name == "DBNull" ? null : res["collation_name"].ToString()), }; rList.Add(_r); } var sp = new Sp() { Name = r["ROUTINE_NAME"].ToString(), Schema = r["ROUTINE_SCHEMA"].ToString(), Params = pList, Results = rList }; SpList.Add(sp); i++; } Console.WriteLine($"{DateTime.Now.ToString("yyyy-MM-dd HH':'mm':'ss")} FINISH"); SPToCoreT4 spToCoreT4Processed = new SPToCoreT4(SpList, P_NameSpace, P_OutPutSolutionFolder, P_ContextSource); File.WriteAllText(Path.Combine(P_OutPutPhysicalFolder, P_OutPutFilename), spToCoreT4Processed.TransformText()); if (ExceptionList.Count > 0) { Console.WriteLine($"{DateTime.Now.ToString("yyyy-MM-dd HH':'mm':'ss")} EXCEPTIONS FOUND! Please check SPToCore_log.txt in '{P_OutPutPhysicalFolder}'"); WriteException(); } }
private static void VerifyStructWithTwoValuesArrayWithUShortSize(ushort size) { // generate the expression Expression<Func<Sp[]>> e = Expression.Lambda<Func<Sp[]>>( Expression.NewArrayBounds(typeof(Sp), Expression.Constant(size, typeof(ushort))), Enumerable.Empty<ParameterExpression>()); Func<Sp[]> f = e.Compile(); // get the array Sp[] result = null; Exception creationEx = null; try { result = f(); } catch (Exception ex) { creationEx = ex; } // generate expected array Sp[] expected = null; Exception expectedEx = null; try { expected = new Sp[(long)size]; } catch (Exception ex) { expectedEx = ex; } // if one failed, verify the other did, too if (creationEx != null || expectedEx != null) { Assert.NotNull(creationEx); Assert.NotNull(expectedEx); Assert.Equal(expectedEx.GetType(), creationEx.GetType()); } else { // otherwise, verify the contents array Assert.Equal(expected.Length, result.Length); for (int i = 0; i < result.Length; i++) { Assert.Equal(expected[i], result[i]); } } }
// Example: // // 0:009> r // r0=00000000 r1=00000000 r2=00000000 r3=76fdcf09 r4=00000000 r5=028df6e0 // r6=028df730 r7=00000000 r8=00000001 r9=01507858 r10=015156a8 r11=028df8e8 // r12=00000000 sp=028df6c8 lr=00000000 pc=76ccce24 psr=600f0030 -ZC-- Thumb // KERNELBASE!RaiseFailFastException+0x60: // 76ccce24 f000f846 bl KERNELBASE!SignalStartWerSvc (76ccceb4) // public override ColorString ToColorString() { if (null == m_colorString) { ConsoleColor color; ColorString cs = new ColorString(" r0="); color = GetColorForDiffAgainstBaseline("r0"); cs.Append(R0.GetColorizedValueString(color)); cs.Append(" r1="); color = GetColorForDiffAgainstBaseline("r1"); cs.Append(R1.GetColorizedValueString(color)); cs.Append(" r2="); color = GetColorForDiffAgainstBaseline("r2"); cs.Append(R2.GetColorizedValueString(color)); cs.Append(" r3="); color = GetColorForDiffAgainstBaseline("r3"); cs.Append(R3.GetColorizedValueString(color)); cs.Append(" r4="); color = GetColorForDiffAgainstBaseline("r4"); cs.Append(R4.GetColorizedValueString(color)); cs.Append(" r5="); color = GetColorForDiffAgainstBaseline("r5"); cs.Append(R5.GetColorizedValueString(color)); cs.AppendLine(); cs.Append(" r6="); color = GetColorForDiffAgainstBaseline("r6"); cs.Append(R6.GetColorizedValueString(color)); cs.Append(" r7="); color = GetColorForDiffAgainstBaseline("r7"); cs.Append(R7.GetColorizedValueString(color)); cs.Append(" r8="); color = GetColorForDiffAgainstBaseline("r8"); cs.Append(R8.GetColorizedValueString(color)); cs.Append(" r9="); color = GetColorForDiffAgainstBaseline("r9"); cs.Append(R9.GetColorizedValueString(color)); cs.Append(" r10="); color = GetColorForDiffAgainstBaseline("r10"); cs.Append(R10.GetColorizedValueString(color)); cs.Append(" r11="); color = GetColorForDiffAgainstBaseline("r11"); cs.Append(R11.GetColorizedValueString(color)); cs.AppendLine(); cs.Append("r12="); color = GetColorForDiffAgainstBaseline("r12"); cs.Append(R12.GetColorizedValueString(color)); cs.Append(" sp="); color = GetColorForDiffAgainstBaseline("sp"); cs.Append(Sp.GetColorizedValueString(color)); cs.Append(" lr="); color = GetColorForDiffAgainstBaseline("lr"); cs.Append(Lr.GetColorizedValueString(color)); cs.Append(" pc="); color = GetColorForDiffAgainstBaseline("pc"); cs.Append(Pc.GetColorizedValueString(color)); cs.Append(" psr="); color = GetColorForDiffAgainstBaseline("psr"); cs.Append(Psr.GetColorizedValueString(color)); // TODO: cs.AppendLine(" TBD: flags and mode"); cs.Append(DbgProvider.ColorizeSymbol(StackFrame.SymbolName)); if (0 != StackFrame.Displacement) { cs.Append("+0x"); cs.Append(StackFrame.Displacement.ToString("x")); } cs.AppendLine(":"); cs.Append(Disasm(Pc.ValueAsPointer)); m_colorString = cs; } return(m_colorString); } // end ToString()