private void AnalyzeInsertStatement(InsertStatement insertStatement, ParserResults results) { insertStatement.PrintTSqlStatementBlockToDebugConsole(); List <TableParsingResult> temp = new List <TableParsingResult>(); Dictionary <string, List <TableParsingResult> > cteModel = new Dictionary <string, List <TableParsingResult> >(); if (insertStatement.WithCtesAndXmlNamespaces?.CommonTableExpressions.Count > 0) { foreach (CommonTableExpression cte in insertStatement.WithCtesAndXmlNamespaces.CommonTableExpressions) { AnalyzeCommonTableExpression(cteModel, cte); } } if (insertStatement.InsertSpecification.Target is NamedTableReference insertNamedTableReference) { string tableName = ExtraceTableNameFromNamedTableRefernce(insertNamedTableReference, out string alias); temp.AddIfNotExists(tableName, SqlOperationType.INSERT, alias); var items = ExtractTablesFromInsertStatement(insertStatement, cteModel); temp.AddIfNotExists(items); } else if (insertStatement.InsertSpecification.Target is VariableTableReference variableTableReference) { temp.AddIfNotExists(variableTableReference.Variable.Name, SqlOperationType.INSERT, null); var items = ExtractTablesFromInsertStatement(insertStatement, cteModel); temp.AddIfNotExists(items); } insertStatement.PrintTablesToDebugConsole(temp); results.AddIfNotExists(temp); }