allowing users to page forward and backward through result sets 2. **Multi-pass processing** — when you need to read the same result set multiple times