protected override SqlStatement PrepareStatement(IRequest context)
{
if (!LoopBreakChecker.HasBreak(this))
{
throw new InvalidOperationException("The loop has no possible exit");
}
var loop = CreateNew();
foreach (var statement in Statements)
{
var prepared = statement.Prepare(context);
if (prepared == null)
{
throw new InvalidOperationException("The preparation of a child statement was invalid.");
}
loop.Statements.Add(prepared);
}
return(loop);
}