Beim Speichern eines Abbild-, Audio- oder Videoobjekts können Sie nicht nur die Formate verwenden, die den Extendern bekannt sind. Sie können auch Ihr eigenes Format angeben. Da den Extendern dieses Format nicht bekannt ist, müssen Sie die Attribute des Quellenobjekts 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(R)-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 speichern beispielsweise eine Zeile, mit der ein Abbild in einer Datenbanktabelle eingefügt wird. Das Quellenabbild, das sich in einer Server-Datei befindet, hat ein benutzerdefiniertes Format, eine Höhe von 640 Pixel und eine Breite von 480 Pixel. Beachten Sie, daß die Attribute vorbereitet werden, bevor das Abbild gespeichert 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); DBEXEC SQL INSERT INTO EMPLOYEE VALUES( '128557', 'Anita Jones', DB2IMAGE( CURRENT SERVER, '/employee/images/ajones.bmp', :hvStorageType, 'Anita''s picture', :hvImgattrs, /* user-specified attributes */ CAST(NULL as LONG VARCHAR) );
Die folgende Anweisung in einem C-Anwendungsprogramm speichert eine Zeile, mit der ein Audioclip in einer Datenbanktabelle eingefügt wird. Der Quellenaudioclip befindet sich in einer Server-Datei und hat ein benutzerdefiniertes Format, eine Abtastrate von 44,1 kHz sowie zwei aufgezeichnete Kanäle. Der Audioclip ist nicht MIDI, so daß leere Zeichenfolgen für Spurnamen und Instrumente angegeben werden.
EXEC SQL BEGIN DECLARE SECTION; long hvStorageType; struct ( short len; char data[600]; }hvAudattr; EXEC SQL END DECLARE SECTION; MMDBAudioAttrs *paudiattr; hvStorageType=MMDB_STORAGE_TYPE_INTERNAL; paudioattr=(MMDBAudioAttrs *) hvAudattr.data; strcpy(paudioAttr>cFormat,"FormatA"); paudioAttr>ulSamplingRate=44100; paudioAttr>usNumChannels=2; hvAudattrs.len=sizeof(MMDBAudioAttrs); DBaPrepareAttrs(paudioAttr); EXEC SQL INSERT INTO EMPLOYEE VALUES( '128557', 'Anita Jones', DB2AUDIO( CURRENT SERVER, '/employee/sounds/ajones.aud', :hvStorageType, 'Anita''s voice', :hvAudattr) /* user-specified attributes */ );