Les Extensions DB2 proposent des fonctions définies par l'utilisateur (UDF) permettant le stockage, l'accès et la manipulation de données image, audio et vidéo dans une base de données. Vous devez coder des requêtes pour ces fonctions UDF dans vos programmes d'applications, à l'aide des instructions SQL, de la même manière que vous demandez des fonctions SQL intégrées. Les fonctions UDF sont lancées sur le serveur de bases de données, comme les fonctions intégrées.
Les fonctions SQL suivantes, figurant dans un programme d'application écrit en C, requièrent une fonction UDF de l'extension Image appelée DB2Image pour le stockage d'une image dans la table de la base de données. Le contenu de l'image source se trouve dans le fichier du serveur :
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*/ 'Anne Dupont', /*nom*/ DB2IMAGE( /*UDF de l'extension Image*/ CURRENT SERVER, /*base de données */ '/Employés/images/adupont.bmp', /*contenu de l'image*/ 'ASIS', /*conservation du format de l'image*/ :hvStorageType, /*stockage image dans BD en tant que BLOB*/ 'Photo d''Anne') /*commentaire*/ );
Les API d'extension permettent l'affichage d'images et la lecture d'objets audio ou vidéo. Ces API peuvent être codées via des appels de fonctions client en langage C. Ces fonctions sont lancées sur le poste de travail client de votre base de données.
Les instructions en langage C qui suivent incluent l'API DBiBrowse. Cette API extrait les données d'un descripteur d'image et lance un navigateur afin d'afficher l'image :
EXEC SQL BEGIN DECLARE SECTION; char hvImg_hdl [251]; EXEC SQL END DECLARE SECTION EXEC SQL SELECT PICTURE INTO :hvImg_hdl WHERE NAME='Robert Durand'; rc=DBiBrowse( "ib %s", /*afficheur d'image*/ MMDB_PLAY_HANDLE, /*utilisation du descripteur d'image*/ hvImg_hdl, /*descripteur d'image*/ MMDB_PLAY_NO_WAIT); /*exécution autonome de l'afficheur*/
Les fonctions UDF doivent s'exécuter sous l'ID utilisateur de l'instance : Les UDF d'extension DB2 doivent s'exécuter sous le même ID utilisateur que celui de l'instance d'extension DB2. De plus, si vous créez une instance d'extension DB2, ou si vous en utilisez une existante, les fonctions UDF doivent s'exécuter sous le même ID utilisateur que l'instance DB2.
DB2 doit être configuré correctement : Vous devez configurer DB2 correctement pour assurer le bon fonctionnement des extensions DB2, en particulier celui des fonctions UDF d'extension DB2. Veillez tout particulièrement à ce que le paramètre de configuration de la base de données, APP_CTL_HEAP_SZ, soit correctement défini.