Wenn Sie ein Abbild-, Audio- oder Videoobjekt aktualisieren, das mit vom Benutzer angegebenen Attributen gespeichert wurde, müssen Sie die Attribute des Inhalts, mit dem aktualisiert wird, angeben. Ordnen Sie die Attributwerte in einer Attributstruktur zu. Die Attributstruktur muß im Datenfeld der Variablen mit dem Datentyp LONG VARCHAR FOR BIT DATA in der benutzerdefinierten Funktion gespeichert werden.
Der UDF-Code auf dem Server erwartet Daten immer im "Big-Endian"-Format. Das Big-Endian-Format ist ein Format, das von den meisten UNIX-Plattformen verwendet wird. Wenn Sie ein Objekt im "Little-Endian-Format" speichern, müssen Sie die vom Benutzer angegebenen Attributdaten vorbereiten, so daß der UDF-Code auf dem Server das Objekt korrekt verarbeiten kann. Das Little-Endian-Format ist ein Format, das normalerweise auf einer Intel-Plattform oder einer anderen Mikroprozessorplattform verwendet wird. (Auch wenn Sie das Objekt nicht im Little-Endian-Format speichern, ist es zu empfehlen, die vom Benutzer angegebenen Attributdaten vorzubereiten.) Verwenden Sie die API DBiPrepareAttrs, um Attribute für Abbildobjekte vorzubereiten. Verwenden Sie die API DBaPrepareAttrs, um Attribute von Audioobjekten vorzubereiten. Verwenden Sie die API DBvPrepareAttrs, um die Attribute von Videoobjekten vorzubereiten.
Die folgenden Anweisungen in einem C-Anwendungsprogramm aktualisieren beispielsweise ein Abbild, dessen Inhalt sich in einer Server-Datei befindet. Das Quellenabbild hat ein benutzerdefiniertes Format und eine Höhe von 640 Pixel sowie eine Breite von 480 Pixel. Beachten Sie, daß die Attribute vorbereitet werden, bevor das Abbild aktualisiert wird.
EXEC SQL BEGIN DECLARE SECTION; long hvStorageType; struct { short len; char data[400]; }hvImgattrs; EXEC SQL END DECLARE SECTION; DB2IMAGEATTRS *pimgattr; hvStorageType=MMDB_STORAGE_TYPE_INTERNAL; pimgattr = (DB2IMAGEATTRS *) hvImgattrs.data; strcpy(pimgattr>Format,"FormatI"); pimgattr>width=640; pimgattr>height=480; hvImgattrs.len=sizeof(DB2IMAGEATTRS); DBiPrepareAttrs(pimgattr); EXEC SQL UPDATE EMPLOYEE SET PICTURE=REPLACE( PICTURE, '/employee/newimg/ajones.bmp', :hvStorageType, 'Anita''s new picture', :ImgAttrs, /*user-supplied attributes*/ CAST(NULL as LONG VARCHAR)) WHERE NAME='Anita Jones';