À̹ÌÁö ¶Ç´Â ºñµð¿À ¿ÀºêÁ§Æ®¿ëÀ¸·Î ÀúÀåµÈ ½æ³×ÀÏÀ» °»½ÅÇÏ·Á¸é, Thumbnail UDF¸¦ »ç¿ëÇϽʽÿÀ(ÀúÀåµÈ À̹ÌÁö³ª ºñµð¿À¿¡ ¿¬°üµÈ °ÍÀÌ ¾ø´Ù¸é, ½æ³×ÀÏÀ» Ãß°¡ÇϽʽÿÀ). Thumbnail UDFÀÇ »ç¿ë½Ã, °»½Å ÁßÀÎ ½æ³×ÀÏÀÇ ¿ÀºêÁ§Æ® ÇÚµé°ú °»½ÅµÈ(¶Ç´Â »õ·Î¿î) ½æ³×ÀÏÀÇ ³»¿ëÀ» ÁöÁ¤ÇϽʽÿÀ.
ÇÁ·Î±×·¥¿¡¼ ½æ³×ÀÏÀ» »ý¼ºÇϽʽÿÀ. Extender´Â ½æ³×ÀÏÀ» »ý¼ºÇÏ´Â API¸¦ Á¦°øÇÏÁö ¾Ê½À´Ï´Ù. »ç¿ëÀÚ´Â °»½ÅÇÏ´Â ½æ³×ÀÏÀÇ Å©±â¿Í Çü½ÄÀ» Á¦¾îÇÕ´Ï´Ù. ÇÁ·Î±×·¥¿¡ ½æ³×ÀÏ¿ë ±¸Á¶¸¦ ¸¸µé¾î UDF¿¡ ÀÖ´Â ½æ³×ÀÏÀÇ ±¸Á¶¸¦ ÁöÁ¤ÇϽʽÿÀ.
¿¹¸¦ µé¾î, C ÀÀ¿ëÇÁ·Î±×·¥¿¡ ÀÖ´Â ´ÙÀ½ ¸í·É¹®Àº ÀúÀåµÈ ºñµð¿À Ŭ¸³°ú ¿¬°üµÈ ½æ³×ÀÏÀ» °»½ÅÇÕ´Ï´Ù.
EXEC SQL BEGIN DECLARE SECTION; struct { short len; char data[10000]; }hvThumbnail; EXEC SQL END DECLARE SECTION; /*Create thumbnail and store in hvThumbnail*/ EXEC SQL UPDATE employee SET picture=Thumbnail( picture, :hvThumbnail) WHERE name='Anita Jones';
»ç¿ëÀÚ Á¦°ø ¼Ó¼ºÀ¸·Î À̹ÌÁö³ª ºñµð¿À ¿ÀºêÁ§Æ® °»½Å½Ã, ½æ³×Àϵµ °»½ÅÇÒ ¼ö ÀÖ½À´Ï´Ù. »ç¿ëÀÚ Á¦°ø ¼Ó¼ºÀ¸·Î À̹ÌÁö³ª ºñµð¿À¸¦ °»½ÅÇÑ´Ù¸é, ÀÔ·ÂÀ¸·Î ½æ³×ÀÏÀ» ÁöÁ¤ÇØ¾ß ÇÕ´Ï´Ù. ¿ÀºêÁ§Æ® °»½Å½Ã ½æ³×ÀÏÀ» °»½ÅÇÏ°í ½ÍÁö ¾Ê´Ù¸é, ½æ³×ÀÏ ½ºÆå¿¡ ³Î(NULL) °ªÀ̳ª ºó ¹®ÀÚ¿À» ÁöÁ¤ÇϽʽÿÀ.
C ÀÀ¿ëÇÁ·Î±×·¥¿¡ ÀÖ´Â ´ÙÀ½ ¸í·É¹®Àº »ç¿ëÀÚ Á¦°ø ¼Ó¼ºÀ¸·Î ºñµð¿À Ŭ¸³À» °»½ÅÇÏ°í ºñµð¿À¿Í ¿¬°üµÈ ½æ³×ÀÏÀ» °»½ÅÇÕ´Ï´Ù.
EXEC SQL BEGIN DECLARE SECTION; long hvStorageType; struct { short len; char data[400]; }hvVidattrs; struct { short len; char data[10000]; }hvThumbnail; EXEC SQL END DECLARE SECTION; hvStorageType=MMDB_STORAGE_TYPE_EXTERNAL; MMDBVideoAttrs *pvideoAttr; pvideoAttr=(MMDBVideoAttrs *)hvVidattrs.data; strcpy(pvideoAttr>cformat,"Formatv"); hvVidattrs.len=sizeof(MMDBVideoAttrs); /* Update video content and thumbnail */ EXEC SQL UPDATE EMPLOYEE SET VIDEO=REPLACE( VIDEO, '/employee/newvid/ajones.mpg', :hvStorageType, 'Anita''s new video', :VidAttrs, :hvThumbnail) /*thumbnail*/ WHERE NAME='Anita Jones';