Verwenden Sie eine Host-Variable oder eine Dateireferenzvariable, um ein Abbild-, Audio- oder Videoobjekt von einem Client-Puffer oder einer Client-Datei zu aktualisieren.
Befindet sich die Quelle für die Aktualisierung in einer Client-Datei, sollten Sie eine Dateireferenzvariable verwenden, um seinen Inhalt 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, der als BLOB in einer Datenbanktabelle gespeichert ist, zu aktualisieren. Die Quelle für die Aktualisierung befindet sich in einer Client-Datei. Beachten Sie, daß das Feld file_options der Dateireferenzvariablen auf die Option SQL_FILE_READ, d. h. auf Eingabe gesetzt ist. Beachten Sie auch, daß die Dateireferenzvariable als Inhaltsargument für die benutzerdefinierte Funktion "Content" verwendet wird.
EXEC SQL BEGIN DECLARE SECTION; SQL TYPE IS BLOB_FILE Audio_file; EXEC SQL END DECLARE SECTION; strcpy (Audio_file.name, "/employee/newsound/ajones.wav"); Audio_file.name_length= strlen(Audio_file.name); Audio_file.file_options= SQL_FILE_READ; EXEC SQL UPDATE EMPLOYEE SET SOUND=CONTENT( SOUND, :Audio_file /*file reference variable*/ 'WAVE', /*keep the image format*/ CAST(NULL as LONG VARCHAR)) WHERE NAME='Anita Jones';
Befindet sich das Objekt in einem Client-Puffer, sollten Sie eine Host-Variable verwenden, um seinen Inhalt zum Aktualisieren zu übertragen. Im folgenden Beispiel für ein C-Anwendungsprogramm wird eine Host-Variable mit dem Namen Video_seg verwendet, um den Inhalt eines Videoclips zum Aktualisieren zu übertragen. Der dem Videoclip zugeordnete Kommentar wird ebenfalls aktualisiert. Der Videoclip wird als BLOB in einer Datenbanktabelle gespeichert. Beachten Sie, daß die Host-Variable als Inhaltsargument für die benutzerdefinierte Funktion "Replace" verwendet wird.
EXEC SQL BEGIN DECLARE SECTION; SQL TYPE IS BLOB (2M) Video_seg EXEC SQL END DECLARE SECTION; EXEC SQL UPDATE EMPLOYEE SET VIDEO=REPLACE( VIDEO, :Video_seg /*host variable*/ 'MPEG1', CAST(NULL as LONG VARCHAR), 'Anita''s new video') WHERE NAME='Anita Jones';
Stellen Sie sicher, daß genügend UDF-Speicher zur Verfügung steht: Wenn Sie ein Objekt aktualisieren, 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 mit dem DB2-Befehl UPDATE DATABASE MANAGER CONFIGURATION aktualisieren.