Vous pouvez stocker un objet image, audio ou vidéo dans une table de base de données en tant qu'objet BLOB, ou dans un fichier du serveur. Dans le deuxième cas, la base de données contient un pointeur sur le fichier.
Lorsque vous stockez un objet provenant de la mémoire tampon ou d'un fichier client, vous indiquez le type de stockage (objet BLOB ou fichier du serveur) dans le paramètre fichier cible (target_file). Si vous spécifiez un nom de fichier, l'objet sera stocké dans un fichier du serveur. Si vous entrez la valeur NULL ou une chaîne vide, le fichier est stocké en tant qu'objet BLOB dans une table de base de données. Le type de données du paramètre fichier cible est LONG VARCHAR. Si vous entrez la valeur NULL, n'oubliez pas de convertir son type de données en LONG VARCHAR (par CAST).
Par exemple, l'instruction ci-après, incluse dans un programme d'application en langage C, stocke une ligne contenant une image dans une table de base de données. L'image source se trouve dans une mémoire tampon sur le poste client. L'image est stockée dans un fichier du serveur et la table de base de données contient un pointeur sur ce fichier :
EXEC SQL BEGIN DECLARE SECTION; SQL TYPE IS BLOB_LOCATOR Img_buf EXEC SQL END DECLARE SECTION; EXEC SQL INSERT INTO EMPLOYEE VALUES( '128557', 'Anne Dupont', DB2IMAGE( CURRENT SERVER, :Img_buf, 'ASIS', '/Employés/images/adupont.bmp', /* stockage de l'image dans un */ /* fichier du serveur */ 'Photo d''Anne') );
Si vous stockez un objet à partir d'un fichier du serveur, spécifiez la constante MMDB_STORAGE_TYPE_INTERNAL
pour enregistrer l'objet dans une table de base de données en tant qu'objet BLOB. Si vous voulez stocker l'objet en le conservant dans le fichier du serveur, indiquez la constante MMDB_STORAGE_TYPE_EXTERNAL. La valeur de MMDB_STORAGE_TYPE_INTERNAL est 1. La valeur de MMDB_STORAGE_TYPE_EXTERNAL est 0.
Par exemple, le programme d'application en C ci-dessous stocke une séquence audio dans un fichier du serveur. Le son source se trouve déjà dans un fichier du serveur. L'opération de stockage place le fichier dans la base de données et le rend donc accessible à l'aide d'instructions SQL.
EXEC SQL BEGIN DECLARE SECTION; long hvStorageType; EXEC SQL END DECLARE SECTION; hvStorageType=MMDB_STORAGE_TYPE_EXTERNAL; EXEC SQL INSERT INTO EMPLOYEE VALUES( '128557', 'Anne Dupont', DB2AUDIO( CURRENT SERVER, '/Employés/sons/adupont.wav', 'WAVE', :hvStorageType, /* stockage de la séquence audio dans */ /* un fichier du serveur */ 'Voix d''Anne Dupont') );