protected override SqlStatement PrepareStatement(IRequest context)
{
var reference = ReferenceExpression;
if (ReferenceExpression is SqlReferenceExpression) {
var referenceName = ((SqlReferenceExpression) ReferenceExpression).ReferenceName;
if (referenceName.Parent == null &&
context.Context.CursorExists(referenceName.Name)) {
reference = SqlExpression.VariableReference(referenceName.Name);
} else {
var tableName = context.Access().ResolveTableName(referenceName);
if (!context.Access().TableExists(tableName))
throw new ObjectNotFoundException(tableName, "Reference table for the FETCH INTO clause was not found.");
reference = SqlExpression.Reference(tableName);
}
}
return new FetchIntoStatement(CursorName, Direction, OffsetExpression, reference);
}