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