Verwenden Sie die benutzerdefinierte Funktion "DB2Image", "DB2Audio" oder "DB2Video" in einer SQL-Anweisung INSERT, um ein Abbild-, Audio- oder Videoobjekt in einer Datenbank zu speichern.
Sie können ein Objekt speichern, dessen Quelle sich in einem Puffer oder einer Datei auf einer Client-Maschine oder in einer Server-Datei befindet. Für diese Quellen können Sie das Objekt in einer Datenbanktabelle als BLOB (Binary Large Object) oder in einer Datei auf dem Datenbank-Server speichern. (Dabei verweist bei der zweiten Möglichkeit die Datenbanktabelle auf die Datei.)
Beim Anfordern der UDF (benutzerdefinierte Funktion) müssen Sie folgendes angeben:
Mit den Image, Audio und Video Extendern können Sie ein Objekt auch dann speichern, wenn die Extender das Format des Objekts nicht erkennen. Wenn das Format nicht erkannt wird, müssen Sie die Attribute des Objekts angeben. Wenn Sie ein Abbild oder Video mit vom Benutzer angegebenen Attributen speichern, können Sie auch ein Piktogramm, d. h. eine verkleinerte Version des Abbilds oder des Videovollbilds, speichern.
Bei Abbildern haben Sie die Möglichkeit, beim Speichern das Format des Abbilds umzusetzen. Wenn Sie die Formatumsetzung anfordern, müssen Sie sowohl das Quellen- als auch das Zielformat des Abbilds angeben. Bei einer Anforderung für eine Formatumsetzung können Sie weitere Änderungen für das Abbild angeben, z. B. eine Ausschnittserstellung oder eine Drehung. Sie geben diese Änderungen mit Hilfe von Umsetzungsoptionen an.
Speicheroperation festschreiben: Nach dem Speichern eines Abbild-, Audio- oder Videoobjekts in einer Datenbank sollten Sie für die Arbeitseinheit eine COMMIT-Operation durchführen. Hierdurch werden die Sperren, die die Extender verwenden, freigegeben, so daß Sie Aktualisierungsoperationen für das gespeicherte Objekt durchführen können.
Die benutzerdefinierten Funktionen (UDFs) "DB2Image", "DB2Audio" und "DB2Video" sind mehrfach belegt. Dies bedeutet, daß sie abhängig von der Verwendung der UDFs unterschiedliche Formate haben. Jede UDF hat vier Formate, wie im folgenden dargestellt (die Zeichenfolge xxxxx in den Formaten kann für Image, Audio oder Video stehen):
Format 1: Objekt aus einem Client-Puffer oder einer Client-Datei ohne Formatumsetzung speichern:
DB2xxxxx( CURRENT SERVER, /* database name in CURRENT SERVER REGISTER */ content, /* object content */ format, /* source format */ target_file, /* target file name for storage in file server */ /* or NULL for storage in table as BLOB */ comment /* user comment */ );
Format 2: Objekt aus einer Server-Datei ohne Formatumsetzung speichern:
DB2xxxxx( CURRENT SERVER, /* database name in CURRENT SERVER REGISTER */ source_file, /* source file name */ format, /* source format */ stortype, /* MMDB_STORAGE_TYPE_EXTERNAL=store */ /* in file server*/ /* MMDB_STORAGE_TYPE_INTERNAL=store */ /* as a BLOB*/ comment /* user comment */ );
Format 3: Objekt mit vom Benutzer angegebenen Attributen aus einem Client-Puffer oder einer Client-Datei speichern:
DB2xxxxx( CURRENT SERVER, /* database name in CURRENT SERVER REGISTER */ content, /* object content */ target_file, /* target file name for storage in file server */ /* or NULL for storage in table as BLOB */ comment, /* user comment */ attrs, /* user-supplied attributes */ thumbnail /* thumbnail (image and video only) */ );
Format 4: Objekt mit vom Benutzer angegebenen Attributen aus einer Server-Datei speichern:
DB2xxxxx( CURRENT SERVER, /* database name in CURRENT SERVER REGISTER */ source_file, /* source file name */ stortype, /* MMDB_STORAGE_TYPE_EXTERNAL=store */ /* in file server*/ /* MMDB_STORAGE_TYPE_INTERNAL=store */ /* as a BLOB*/ comment, /* user comment */ attrs, /* user-supplied attributes */ thumbnail /* thumbnail (image and video only) */ );
Zu der UDF DB2Image gehören zusätzlich die folgenden Formate:
Format 5: Abbild aus einem Client-Puffer oder einer Client-Datei mit Formatumsetzung speichern:
DB2Image( CURRENT SERVER, /* database name in CURRENT SERVER REGISTER */ content, /* object content */ source_format, /* source format */ target_format, /* target format */ target_file, /* target file name for storage in file server */ /* or NULL for storage in table as BLOB */ comment /* user comment */ );
Format 6: Abbild aus einer Server-Datei mit Formatumsetzung speichern:
DB2Image( CURRENT SERVER, /* database name in CURRENT SERVER REGISTER */ source_file, /* server file name */ source_format, /* source format */ target_format, /* target format */ target_file, /* target file name for storage in file server */ /* or NULL for storage in table as BLOB */ comment /* user comment */ );
Format 7: Abbild aus einem Client-Puffer oder einer Client-Datei mit Formatumsetzung und zusätzlichen Änderungen speichern:
DB2Image( CURRENT SERVER, /* database name in CURRENT SERVER REGISTER */ content, /* object content */ source_format, /* source format */ target_format, /* target format */ conversion_options, /* Conversion options */ target_file, /* target file name for storage in file server */ /* or NULL for storage in table as BLOB */ comment /* user comment */ );
Format 8: Abbild aus einer Server-Datei mit Formatumsetzung und zusätzlichen Änderungen speichern:
DB2Image( CURRENT SERVER, /* database name in CURRENT SERVER REGISTER */ source_file, /* server file name */ source_format, /* source format */ target_format, /* target format */ conversion_options /* conversion options */ target_file, /* target file name for storage in file server */ /* or NULL for storage in table as BLOB */ comment /* user comment */ );
Die folgenden Anweisungen in einem C-Anwendungsprogramm fügen beispielsweise eine Zeile ein, mit der ein Abbild zur Tabelle "employee" hinzugefügt wird. Das Quellenabbild befindet sich in einer Server-Datei mit dem Namen ajones.bmp. Das Abbild wird in der Tabelle "employee" ohne Formatumsetzung als BLOB (Binary Large Object) gespeichert. (Dies entspricht dem oben aufgeführten Format 2.)
EXEC SQL BEGIN DECLARE SECTION; long hvStorageType; EXEC SQL END DECLARE SECTION; hvStorageType=MMDB_STORAGE_TYPE_INTERNAL; EXEC SQL INSERT INTO employee VALUES( '128557', /*id*/ 'Anita Jones', /*name*/ DB2Image( /*Image Extender UDF*/ CURRENT SERVER, /*database*/ '/employee/images/ajones.bmp', /*source file */ 'ASIS', /*keep the image format*/ :hvStorageType /*store image in DB as BLOB*/ 'Anita''s picture') /*comment */ );
Die folgenden Anweisungen in einem C-Anwendungsprogramm speichern dieselbe Zeile wie im vorigen Beispiel in der Tabelle "employee". In diesem Fall wird jedoch das Abbild beim Speichern vom BMP-Format in das GIF-Format umgesetzt. (Dies entspricht dem oben aufgeführten Format 6.)
EXEC SQL INSERT INTO employee VALUES( '128557', /*id*/ 'Anita Jones', /*name*/ DB2Image( /*Image Extender UDF* CURRENT SERVER, /*database*/ '/employee/images/ajones.bmp', /*source file */ 'ASIS', /*source image format*/ 'GIF', /*target image format*/ 'Anita''s picture') /*comment*/ );
Wenn Sie ein Abbild-, Audio- oder Videoobjekt speichern, berechnet der Extender die Attribute, wie beispielsweise die Anzahl der im Abbild verwendeten Farben, die Spieldauer des Audioclips oder das Videokomprimierungsformat. Wenn Sie ein Objekt mit einem nicht erkannten Format speichern, müssen Sie diese Attribute als Eingabe für die benutzerdefinierte Funktion angeben. Der Extender speichert diese und andere Attribute, wie beispielsweise Kommentare über das Objekt oder die ID des Benutzers, der das Objekt gespeichert hat, in der Datenbank. Diese Attribute können anschließend in Abfragen verwendet werden.
Verwenden Sie eine Host-Variable oder eine Dateireferenzvariable, um den Inhalt eines Abbild-, Audio- oder Videoobjekts von einem Client-Puffer oder einer Client-Datei auf den Server zu übertragen.
Befindet sich das Objekt in einer Client-Datei, sollten Sie eine Dateireferenzvariable verwenden, um seinen Inhalt zum Speichern auf den Server zu übertragen. Die Anweisungen im folgenden Beispiel für ein C-Anwendungsprogramm definieren eine Dateireferenzvariable mit dem Namen Audio_file und verwenden sie, um einen Audioclip, dessen Inhalt sich in einer Client-Datei befindet, auf den Server zu übertragen, um ihn in einer Datenbanktabelle zu speichern. Beachten Sie, daß das Feld file_option der Dateireferenzvariablen auf die Option für die Eingabe SQL_FILE_READ gesetzt ist. Beachten Sie auch, daß die Dateireferenzvariable als Inhaltsargument für die benutzerdefinierte Funktion "DB2Audio" verwendet wird.
EXEC SQL BEGIN DECLARE SECTION; SQL TYPE IS BLOB_FILE Audio_file; EXEC SQL END DECLARE SECTION; strcpy (Audio_file.name, "/employee/sounds/ajones.wav"); Audio_file.name_length= strlen(Audio_file.name); Audio_file.file_options= SQL_FILE_READ; EXEC SQL INSERT INTO employee VALUES( '128557', 'Anita Jones', DB2Audio( CURRENT SERVER, :Audio_file, /* file reference variable */ 'WAVE', CAST(NULL as LONG VARCHAR), 'Anita''s voice') );
Befindet sich das Objekt in einem Client-Puffer, sollten Sie eine Host-Variable verwenden, um seinen Inhalt zum Speichern auf den Server zu übertragen. In den folgenden Anweisungen für ein C-Anwendungsprogramm wird eine Host-Variable mit dem Namen Video_seg verwendet, um den Inhalt eines Videoclips zum Speichern auf den Server zu übertragen. Der Videoclip wird als BLOB in einer Datenbanktabelle gespeichert. Beachten Sie, daß die Host-Variable als Inhaltsargument für die benutzerdefinierte Funktion "DB2Video" verwendet wird.
EXEC SQL BEGIN DECLARE SECTION; SQL TYPE IS BLOB (5M) Video_seg EXEC SQL END DECLARE SECTION; EXEC SQL INSERT INTO employee VALUES( '128557', 'Anita Jones', DB2Video( CURRENT SERVER, :Video_seg, /* host variable */ 'MPEG1', '', 'Anita''s video') );
Stellen Sie sicher, daß genügend UDF-Speicher zur Verfügung steht: Wenn Sie ein Objekt speichern, dessen Inhalt sich in einem Client-Puffer befindet, müssen Sie sicherstellen, daß der Parameter UDF_MEM_SZ in der
Datenbankmanagerkonfiguration auf einen Wert von mindestens 4 MB gesetzt ist. Sie können den Parameter UDF_MEM_SZ aktualisieren, indem Sie den DB2-Befehl UPDATE DATABASE MANAGER CONFIGURATION verwenden.
Weitere Informationen zum Befehl UPDATE DATABASE MANAGER befinden sich im Handbuch DB2 Command Reference.
Wenn sich das Abbild-, Audio- oder Videoobjekt, das gespeichert werden soll, in einer Server-Datei befindet, müssen Sie ihren Pfad als Inhaltsargument für die benutzerdefinierte Funktion angeben. Die folgende Anweisung in einem C-Anwendungsprogramm speichert beispielsweise eine Zeile, mit der ein Abbild in die Datenbank eingefügt wird. Der Abbildinhalt befindet sich in einer Datei auf dem Server. Das gespeicherte Abbild verbleibt in der Server-Datei. Von der Datenbank aus wird auf das Abbild verwiesen.
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', DB2Image( CURRENT SERVER, '/employee/images/ajones.bmp', /*source in server file */ 'BMP', :hvStorageType, 'Anita''s picture') );
Geben Sie den korrekten Pfad an: Wenn Sie ein Objekt speichern, dessen Quelle sich in einer Server-Datei befindet, können Sie den vollständig qualifizierten oder den relativen Namen der Datei angeben. Wenn Sie einen relativen Namen angeben, müssen Sie sicherstellen, daß die entsprechenden Umgebungsvariablen auf dem DB2-Server den korrekten Pfad für die Datei enthalten. Informationen zum Definieren dieser Umgebungsvariablen befinden sich in Anhang A. Umgebungsvariablen für DB2 Extender einstellen.
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, auf die die Datenbanktabelle verweist.
EXEC SQL BEGIN DECLARE SECTION; SQL TYPE IS BLOB (3M) 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 einen Zeiger auf die Server-Datei 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') );
Beim Speichern eines Objekts müssen Sie sein Format angeben. Die Formate, die angegeben werden können, sind in Tabelle 4 aufgelistet. Die Extender speichern das Abbild-, Audio- oder Videoobjekt im gleichen Format wie die Quelle. Bei Abbildern haben Sie die Möglichkeit anzugeben, daß der Image Extender das Format des gespeicherten Abbilds umsetzen soll. Soll das Abbildformat umgesetzt werden, müssen Sie das Format des Quellenabbilds und des Zielabbilds (d. h. des gespeicherten Abbilds) angeben.
Geben Sie das Format der Quelle des Abbild-, Audio- oder Videoobjekts an, wenn das Objekt ohne Formatumsetzung gespeichert werden soll. Die folgende Anweisung in einem C-Anwendungsprogramm speichert beispielsweise ein Bitmap-Abbild (BMP) in einer Datenbanktabelle. Der Inhalt der Quelle befindet sich in einer Server-Datei. Das Zielabbild hat das gleiche Format wie die Quelle.
EXEC SQL INSERT INTO employee VALUES( '128557', 'Anita Jones', DB2Image( CURRENT SERVER, '/employee/images/ajones.bmp', 'BMP', /*image in BMP format */ '', 'Anita''s picture') );
Sie können auch einen Nullwert oder eine leere Zeichenfolge als Format angeben. Für den Image Extender ist auch die Zeichenfolge ASIS zulässig. In diesem Fall bestimmt der Extender das Format, indem er die Quelle prüft.
NULL oder ASIS als erkennbare Formate verwenden: Geben Sie einen Nullwert, eine leere Zeichenfolge oder die Zeichenfolge ASIS nur an, wenn der Extender das Format erkennen kann, d. h., wenn es eines der Formate ist, die in Tabelle 4 für den Extender aufgeführt sind. Ist dies nicht der Fall, kann der Extender das Format nicht speichern.
Geben Sie das Format für die Quellen- und Zielabbilder an, wenn Sie ein Abbild mit Formatumsetzung speichern wollen. In Tabelle 4 ist aufgelistet, welche Formatumsetzungen zulässig sind.
Darüber hinaus können Sie Umsetzungsoptionen für zusätzliche Änderungen angeben, z. B. Drehung oder Komprimierung, die für das gespeicherte Abbild angewendet werden sollen. Die Umsetzungsoption wird über einen Parameter und einen zugeordneten Wert angegeben. Die Parameter und die zulässigen Werte sind in Tabelle 5 aufgelistet. Sie können mehrere Änderungen für ein gespeichertes Abbild anfordern, indem Sie mehrere Parameter/Wert-Paare angeben.
Im folgenden Beispiel wird ein Bitmap-Abbild (BMP), dessen Inhalt sich in einer Server-Datei befindet, beim Speichern in einer Datenbanktabelle in das GIF-Format umgewandelt.
EXEC SQL INSERT INTO employee VALUES( '128557', 'Anita Jones', DB2Image( CURRENT SERVER, '/employee/images/ajones.bmp', 'BMP', /* source format */ 'GIF', /* target format */ '', 'Anita''s picture') );
Im folgenden Beispiel wird das Abbild aus dem vorherigen Beispiel beim Speichern in einer Datenbanktabelle in das GIF-Format umgesetzt. Darüber hinaus wird beim Speichern ein Ausschnitt des Abbilds mit einer Breite von 110 Pixel und einer Höhe von 150 Pixel erstellt. Zusätzlich wird es unter Verwendung der LZW-Komprimierung komprimiert.
EXEC SQL INSERT INTO employee VALUES( '128557', 'Anita Jones', DB2Image( CURRENT SERVER, '/employee/images/ajones.bmp', 'BMP', /* source format */ 'GIF', /* target format */ '-x 110 -y 150 -c 14', /* conversion options */ '/employee/images/ajones.gif', 'Anita''s picture') );
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 in einem Format, das spezifisch für UNIX-Plattformen ist. Wenn Sie ein Objekt von einem Nicht-UNIX-Client speichern, müssen Sie die vom Benutzer angegebenen Attributdaten vorbereiten, so daß der UDF-Code auf dem Server das Objekt korrekt verarbeiten kann. Verwenden Sie die API DBiPrepareAttrs, um Attribute für Abbildobjekte vorzubereiten, die API DBaPrepareAttrs für die Attribute von Audioobjekten und die API DBvPrepareAttrs für die Attribute von Videoobjekten.
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.
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 */ );
Wenn Sie ein Abbild in Ihrem eigenen Format speichern, können Sie auch ein Piktogramm, d. h. eine verkleinerte Version des Abbilds, speichern. Sie können die Größe und das Format des Piktogramms steuern. Beim Speichern eines Abbilds in einem Format, das der Image Extender erkennt, wird vom Extender automatisch ein Piktogramm für das Objekt generiert und gespeichert. Der Image Extender erstellt ein Piktogramm im GIF-Format in der Größe 112 x 84 Pixel.
Wenn Sie ein Videoobjekt in Ihrem eigenen Format speichern, können Sie auch ein Piktogramm speichern, das das Videoobjekt symbolisiert. Beim Speichern eines Videoobjekts in einem Format, das der Video Extender erkennt, wird vom Extender automatisch ein generisches Piktogramm für das Objekt gespeichert. Der Video Extender erstellt ein Piktogramm im GIF-Format in der Größe 108 x 78 Pixel.
Geben Sie anstelle des Piktogramms einen Nullwert oder eine leere Zeichenfolge an, wenn beim Speichern eines Abbild- oder Videoobjekts in Ihrem eigenen Format kein Piktogramm gespeichert werden soll.
Generieren Sie das Piktogramm in Ihrem Programm; die Extender stellen keine APIs zur Verfügung, mit denen Piktogramme generiert werden können. Erstellen Sie im Programm eine Struktur für das Piktogramm und geben Sie die Piktogrammstruktur in der UDF an.
Die folgenden Anweisungen in einem C-Anwendungsprogramm speichern eine Zeile, mit der ein Videoclip in einer Datenbanktabelle eingefügt wird. Der Quellenvideoclip, dessen Inhalt sich in einer Server-Datei befindet, hat ein benutzerdefiniertes Format. Der Inhalt des Videoclips verbleibt auf dem Server. Auf ihn wird von der Tabelle aus verwiesen. Außerdem wird ein Piktogramm eines repräsentativen Videovollbilds gespeichert.
EXEC SQL BEGIN DECLARE SECTION; long hvStorageType; struct { short len; char data[400]; }hvVidattrs; struct { short len; char data[10000]; }hvThumbnail; EXEC SQL END DECLARE SECTION; MMDBVideoAttrs *pvideoAttr; hvStorageType=MMDB_STORAGE_TYPE_EXTERNAL; pvideoAttr=(MMDBVideoAttrs *)hvVidattrs.data; strcpy(pvideoAttr>cFormat,"Formatv"); hvVidattrs.len=sizeof(MMDBVideoAttrs); /* Generate thumbnail and assign data in video structure */ EXEC SQL INSERT INTO employee VALUES( '128557', 'Anita Jones', DB2Video( CURRENT SERVER, '/employee/videos/ajones.vid', :hvStorageType, 'Anita''s video', :hvVidattrs, :hvThumbnail) /* Thumbnail*/ );
Ein Kommentar wird mit einem Abbild-, Audio- oder Videoobjekt gespeichert, indem der Kommentar in der UDF-Anforderung angegeben wird. Ein Kommentar ist ein Text mit freien Format und dem Datentyp LONG VARCHAR, der bis zu 32 700 Byte lang sein kann. Geben Sie anstelle des Kommentars einen Nullwert oder eine leere Zeichenfolge an, wenn beim Speichern eines Objekts kein Kommentar gespeichert werden soll. 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 einen Kommentar mit einem Videoclip.
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', DB2Video( CURRENT SERVER, '/employee/videos/ajones.mpg', 'MPEG1', :StorageType, 'Anita''s video') /* comment */ );
Die folgenden Anweisungen in einem C-Anwendungsprogramm speichern ein Abbild ohne Kommentar.
EXEC SQL BEGIN DECLARE SECTION; long hvStorageType; EXEC SQL END DECLARE SECTION; hvStorageType=MMDB_STORAGE_TYPE_INTERNAL; EXEC SQL INSERT INTO employee VALUES( '128557', 'Anita Jones', DB2Image( CURRENT SERVER, '/employee/images/ajones.bmp', 'GIF', :hvStorageType, Cast(NULL as LONG VARCHR) /* no comment */ );