private static bool BatchesProduceOneResultSet(SqlBatchCollection batches, out string message) { var selectCount = batches.SelectMany(x => x.Statements).Where(x => IsPlainSelect(x)).Count(); if (selectCount > 1) { message = $"SQL contains {selectCount} select statements. There must only be one."; return(false); } else if (selectCount == 0) { message = "SQL does not contain a Select statement"; return(false); } var lastStatement = batches.Last().Statements.Last(); if (IsPlainSelect(lastStatement)) { message = string.Empty; return(true); } else { message = "The last SQL statement must be a select"; return(false); } }
private static bool BatchesAreSafe(SqlBatchCollection batches, out string message) { for (int i = 0; i < batches.Count; i++) { var batch = batches[i]; Console.WriteLine($"Batch {i}"); for (int j = 0; j < batch.Statements.Count; j++) { var statement = batch.Statements[j]; Console.WriteLine($"Statement {j} - {statement}"); Console.WriteLine(statement.Sql); if (StatementIsSafe(statement, out message) == false) { return(false); } } } message = "Batch is safe"; return(true); }