74: def fetch_scroll(direction, offset)
75: case direction
76: when DBI::SQL_FETCH_NEXT
77: @current_row += 1
78: fill_array(@res_handle.fetch_row)
79: when DBI::SQL_FETCH_PRIOR
80: @res_handle.data_seek(@current_row - 1)
81: fill_array(@res_handle.fetch_row)
82: when DBI::SQL_FETCH_FIRST
83: @current_row = 1
84: @res_handle.data_seek(@current_row - 1)
85: fill_array(@res_handle.fetch_row)
86: when DBI::SQL_FETCH_LAST
87: @current_row = @res_handle.num_rows
88: @res_handle.data_seek(@current_row - 1)
89: fill_array(@res_handle.fetch_row)
90: when DBI::SQL_FETCH_ABSOLUTE
91: @current_row = offset + 1
92: @res_handle.data_seek(@current_row - 1)
93: fill_array(@res_handle.fetch_row)
94: when DBI::SQL_FETCH_RELATIVE
95: @current_row += offset + 1
96: @res_handle.data_seek(@current_row - 1)
97: fill_array(@res_handle.fetch_row)
98: else
99: raise NotSupportedError
100: end
101:
102: end