Sie können ein Abbild-, Audio- oder Videoobjekt in einer Datenbanktabelle als BLOB (Binary Large Object) oder in einer Server-Datei speichern. Wenn Sie das Objekt in einer Server-Datei speichern, verweist die Datenbank auf die Datei.
Wenn Sie das Objekt aus einem Client-Puffer oder einer Client-Datei speichern, erfolgt die Speicherung als BLOB oder Server-Datei entsprechend den Angaben, die Sie im Parameter target_file machen. Die Angabe eines Dateinamens bedeutet, daß das Objekt in einer Server-Datei gespeichert werden soll. Die Angabe eines Nullwerts oder einer leeren Zeichenfolge bedeutet, daß das Objekt als BLOB in einer Datenbanktabelle gespeichert werden soll. Der Datentyp des Parameters target_file ist LONG VARCHAR. Wenn Sie einen Nullwert angeben, müssen Sie daran denken, ihn mit dem Datentyp LONG VARCHAR zu versehen.
Die folgenden Anweisungen in einem C-Anwendungsprogramm speichern beispielsweise eine Zeile, mit der ein Abbild in eine Datenbanktabelle eingefügt wird. Die Quelle des Abbilds befindet sich in einem Client-Puffer. Das Abbild wird in einer Server-Datei gespeichert. Die Datenbanktabelle zeigt auf die Server-Datei:
EXEC SQL BEGIN DECLARE SECTION; SQL TYPE IS BLOB_LOCATOR Img_buf EXEC SQL END DECLARE SECTION; EXEC SQL INSERT INTO EMPLOYEE VALUES( '128557', 'Anita Jones', DB2IMAGE( CURRENT SERVER, :Img_buf, 'ASIS', '/employee/images/ajones.bmp', /* store image in server file */ 'Anita''s picture') );
Geben Sie die Konstante MMDB_STORAGE_TYPE_INTERNAL
an, wenn Sie ein Objekt aus einer Server-Datei als BLOB in einer Datenbanktabelle speichern wollen. Soll das Objekt gespeichert werden und sein Inhalt in der Server-Datei verbleiben, geben Sie die Konstante MMDB_STORAGE_TYPE_EXTERNAL an. MMDB_STORAGE_TYPE_INTERNAL hat einen ganzzahligen Wert von 1. MMDB_STORAGE_TYPE_EXTERNAL hat einen ganzzahligen Wert von 0.
Im folgenden C-Anwendungsprogramm wird beispielsweise ein Audioclip in einer Server-Datei gespeichert. Der Quelleninhalt des Audioclips befindet sich bereits in einer Server-Datei. Die Speicheroperation stellt den Dateinamen in die Datenbank und ermöglicht dadurch den Zugriff von SQL-Anweisungen auf die Datei.
EXEC SQL BEGIN DECLARE SECTION; long hvStorageType; EXEC SQL END DECLARE SECTION; hvStorageType=MMDB_STORAGE_TYPE_EXTERNAL; EXEC SQL INSERT INTO EMPLOYEE VALUES( '128557', 'Anita Jones', DB2AUDIO( CURRENT SERVER, '/employee/sounds/ajones.wav', 'WAVE', :hvStorageType, /* store audio in server file */ 'Anita''s voice') );