code: public synchronized int setBytes(long pos, byte[] bytes, int offset,
                                       int len) throws SQLException {
  
          if (!isInLimits(bytes.length, offset, len)) {
              throw Util.outOfRangeArgument();
          }
  
          if (offset != 0 || len != bytes.length) {
              byte[] newBytes = new byte[len];
  
              System.arraycopy(bytes, (int) offset, newBytes, 0, len);
  
              bytes = newBytes;
          }
  
          return setBytes(pos, bytes);
      }
docs: Writes all or part of the given <code>byte</code> array to the
  <code>BLOB</code> value that this <code>Blob</code> object represents
  and returns the number of bytes written.
  
  @param pos the position in the <code>BLOB</code> object at which to
  start writing
  @param bytes the array of bytes to be written to this
  <code>BLOB</code> object
  @param offset the offset into the array <code>bytes</code> at which
  to start reading the bytes to be set
  @param len the number of bytes to be written to the <code>BLOB</code>
  value from the array of bytes <code>bytes</code>
  @return the number of bytes written
  @throws SQLException if there is an error accessing the
  <code>BLOB</code> value