# File lib/sdb/right_sdb_interface.rb, line 622
        def select(select_expression, next_token = nil, consistent_read = nil)
            select_expression      = query_expression_from_array(select_expression) if select_expression.is_a?(Array)
            @last_query_expression = select_expression
            #
            request_params = { 'SelectExpression' => select_expression,
                               'NextToken'        => next_token,
                               'ConsistentRead'   => consistent_read }
            link   = generate_request("Select", request_params)
            result = select_response_to_ruby(request_info( link, QSdbSelectParser.new ))
            return result unless block_given?
            # loop if block if given
            begin
                # the block must return true if it wanna continue
                break unless yield(result) && result[:next_token]
                # make new request
                request_params['NextToken'] = result[:next_token]
                link   = generate_request("Select", request_params)
                result = select_response_to_ruby(request_info( link, QSdbSelectParser.new ))
            end while true
        rescue Exception
            on_exception
        end