code: function createFnStreamRows(statement, context)
  {
    return function(options)
    {
      // if some options are specified
      if (Util.exists(options))
      {
        // check for invalid options
        Errors.checkArgumentValid(Util.isObject(options),
            ErrorCodes.ERR_STMT_FETCH_ROWS_INVALID_OPTIONS);
  
        // check for invalid start
        if (Util.exists(options.start))
        {
          Errors.checkArgumentValid(Util.isNumber(options.start),
              ErrorCodes.ERR_STMT_STREAM_ROWS_INVALID_START);
        }
  
        // check for invalid end
        if (Util.exists(options.end))
        {
          Errors.checkArgumentValid(Util.isNumber(options.end),
              ErrorCodes.ERR_STMT_STREAM_ROWS_INVALID_END);
        }
  
        // check for invalid fetchAsString
        var fetchAsString = options.fetchAsString;
        if (Util.exists(fetchAsString))
        {
          // check that the value is an array
          Errors.checkArgumentValid(Util.isArray(fetchAsString),
              ErrorCodes.ERR_STMT_STREAM_ROWS_INVALID_FETCH_AS_STRING);
  
          // check that all the array elements are valid
          var invalidValueIndex = NativeTypes.findInvalidValue(fetchAsString);
          Errors.checkArgumentValid(invalidValueIndex === -1,
              ErrorCodes.ERR_STMT_STREAM_ROWS_INVALID_FETCH_AS_STRING_VALUES,
              JSON.stringify(fetchAsString[invalidValueIndex]));
        }
      }
  
      return new RowStream(statement, context, options);
    };
  }
docs: Creates a function that streams the rows in a statement's result. If start
  and end values are specified, only rows in the specified range are streamed.
  
  @param statement
  @param context