Die DB2 Extender stellen benutzerdefinierte Funktionen zur Verfügung, die Sie verwenden können, um auf Abbild-, Audio- und Videodaten in einer Datenbank zuzugreifen und die Daten zu speichern und zu ändern. Sie codieren Anforderungen für diese benutzerdefinierten Funktionen (UDFs) in Ihrem Anwendungsprogramm, indem Sie SQL-Anweisungen auf die gleiche Weise verwenden, wie Sie integrierte SQL-Funktionen anfordern. Benutzerdefinierte Funktionen werden wie integrierte Funktionen im Datenbank-Server ausgeführt.
Die folgende SQL-Anweisung in einem C-Anwendungsprogramm fordert eine benutzerdefinierte Funktion (UDF) des Image Extenders an. Diese Funktion hat den Namen DB2Image und soll verwendet werden, um ein Abbild in einer Datenbanktabelle zu speichern. Der Inhalt des Quellenabbilds befindet sich in einer Server-Datei.
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', /*image content*/ 'ASIS', /*keep the image format*/ :hvStorageType, /*store image in DB as BLOB* 'Anita''s picture'), /*comment*/ );
Sie verwenden Extender-Anwendungsprogrammierschnittstellen, um Abbilder anzuzeigen und Audio- oder Videoobjekte wiederzugeben. Sie codieren diese APIs, indem Sie Client-Funktionsaufrufe in der Programmiersprache C verwenden. Die Funktionen werden auf Ihrer Datenstation für den Datenbank-Client ausgeführt.
Die folgenden Anweisungen in der Programmiersprache C rufen eine lokale Funktion mit dem Namen DBiBrowse auf, um ein aus einer Datenbanktabelle abgerufenes Abbild anzuzeigen:
EXEC SQL BEGIN DECLARE SECTION; char hvImg_hdl[251]; EXEC SQL END DECLARE SECTION EXEC SQL SELECT picture INTO :hvImg_hdl WHERE name= 'Robert Smith'; rc=DBiBrowse( "ib %s", /*image browser*/ MMDB_PLAY_HANDLE, /*use image handle*/ hvImg_hdl, /*image handle*/ MMDB_PLAY_NO_WAIT); /*run browser independently*/
UDFs müssen unter der Benutzer-ID des Exemplars ausgeführt werden: DB2 Extender UDFs müssen unter derselben Benutzer-ID ausgeführt werden wie das DB2 Extender-Exemplar. Darüber hinaus müssen, wenn Sie ein DB2 Extender-Exemplar erstellen oder ein bestehendes DB2 Extender-Exemplar verwenden, die UDFs unter derselben Benutzer-ID ausgeführt werden wie das DB2-Exemplar.
DB2 muß korrekt konfiguriert sein: DB2 muß korrekt konfiguriert sein, um den korrekten Betrieb der DB2 Extender sicherzustellen, besonders den korrekten Betrieb der DB2 Extender-UDFs. Insbesondere muß der Datenbankkonfigurationsparameter APP_CTL_HEAP_SZ korrekt eingestellt sein.