注釈は、それ自体で更新することもできますし、それに対応するオブジェクトを更新するときに更新することもできます。
注釈をそれ自体で更新するときには、Comment UDF を使用します。 この場合、更新される注釈の内容と、そのオブジェクトのハンドルをもつ表の列を指定します。 その内容をサーバーに伝送するには、ホスト変数を使用します。 たとえば、次のステートメントでは、hvRemarks というホスト変数を宣言し、それを使用して、保管されたビデオ・クリップの既存の注釈を更新します。
EXEC SQL BEGIN DECLARE SECTION; struct { short len; char data [40]; }hvRemarks; EXEC SQL END DECLARE SECTION; /* Get the old comment */ EXEC SQL SELECT COMMENT(VIDEO) INTO :hvRemarks FROM EMPLOYEE WHERE NAME = 'Anita Jones'; /* Append to old comment */ hvRemarks.data[Remarks.len]='\0'; hvRemarks.len=strlen(hvRemarks.data); strcat (hvRemarks.data, "Updated video"); EXEC SQL UPDATE EMPLOYEE SET VIDEO=COMMENT(VIDEO, :hvRemarks) WHERE NAME = 'Anita Jones';
注釈の更新を、それに対応するオブジェクトを更新するときに行うには、Replace UDF を使用します。 たとえば、次のステートメントでは、サーバー・ファイルに保管されたビデオ・クリップを更新するとともに、それに対応する注釈も更新します。
EXEC SQL BEGIN DECLARE SECTION; long hvStorageType; EXEC SQL END DECLARE SECTION; hvStorageType=MMDB_STORAGE_TYPE_EXTERNAL; EXEC SQL UPDATE EMPLOYEE SET VIDEO=REPLACE( VIDEO, '/employee/newvid/ajones.mpg', 'MPEG1', :hvStorageType, 'Anita''s new video') /*updated comment*/ WHERE NAME='Anita Jones';