»ç¿ëÀÚ Á¤ÀÇ ÇÔ¼ö(UDF)´Â SQLÀÇ ³»Àå ÇÔ¼ö¿¡¼ Á¦°øÇÏ´Â Áö¿ø¿¡ È®ÀåµÇ°í Ãß°¡µÇ¸ç, ³»Àå ÇÔ¼ö°¡ »ç¿ëµÇ´Â °÷ÀÌ¸é ¾îµðµçÁö »ç¿ëµÉ ¼ö ÀÖ½À´Ï´Ù. ´ÙÀ½°ú °°ÀÌ UDF¸¦ ÀÛ¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù.
UDF¿¡´Â ´ÙÀ½°ú °°Àº ¼¼ °¡Áö À¯ÇüÀÌ ÀÖ½À´Ï´Ù.
¿¹¸¦ µé¾î, ±âº» À¯Çü INTEGER·Î Á¤ÀÇµÈ ±¸º° À¯Çü SHOESIZE°¡ ÀÖ´Â °æ¿ì, ³»Àå ÇÔ¼ö AVG(INTEGER)¿¡¼ Àü·¡µÈ UDF AVG(SHOESIZE)´Â Á¤ÀÇµÉ ¼ö ÀÖÀ¸¸ç Ä÷³ ÇÔ¼ö°¡ µË´Ï´Ù.
¿¹¸¦ µé¾î, Å×À̺í ÇÔ¼ö´Â ÆÄÀÏÀ» ¼±ÅÃÇÏ¿© Å×À̺í·Î º¯È¯Çϰí World Wide WebÀÇ »ùÇà µ¥ÀÌÅ͸¦ Ç¥·Î ¸¸µé°Å³ª Lotus Notes µ¥ÀÌÅͺ£À̽º¿¡ ¾×¼¼½ºÇÏ°í ³¯Â¥, ¼Û½ÅÀÚ, ¸ÞÀÏ ¸Þ½ÃÁö ÅØ½ºÆ®¿Í °°Àº Á¤º¸¸¦ ¸®ÅÏÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ Á¤º¸´Â µ¥ÀÌÅͺ£À̽ºÀÇ ´Ù¸¥ Å×À̺í°ú Á¶À뵃 ¼ö ÀÖ½À´Ï´Ù.
Å×À̺í ÇÔ¼ö´Â ¿ÜºÎ ÇÔ¼ö¸¸ µÉ ¼ö ÀÖ½À´Ï´Ù. Àü·¡ ÇÔ¼ö´Â µÉ ¼ö ¾ø½À´Ï´Ù.
±âÁ¸ÀÇ UDF Á¤º¸´Â SYSCAT.FUNCTIONS ¹× SYSCAT.FUNCPARMS īŻ·Î±× ºä¿¡ ±â·ÏµË´Ï´Ù. ½Ã½ºÅÛ Ä«Å»·Î±×¿¡´Â UDF¿¡ ´ëÇÑ ½ÇÇà °¡´ÉÇÑ Äڵ尡 µé¾î ÀÖÁö ¾Ê½À´Ï´Ù(±×·¯¹Ç·Î, ¹é¾÷ Ç÷£ ¹× º¹±¸ Ç÷£À» ÀÛ¼ºÇÏ·Á¸é, ½ÇÇà°¡´ÉÇÑ UDF °ü¸® ¹æ¹ýÀ» °í·ÁÇØ¾ß ÇÕ´Ï´Ù).
UDFÀÇ ¼º´É¿¡ ´ëÇÑ Åë°è´Â SQL¹®À» ÄÄÆÄÀÏÇÒ ¶§ Áß¿äÇÕ´Ï´Ù. »ç¿ëÀÚ Á¤ÀÇ ÇÔ¼ö¿¡ ´ëÇÑ Åë°è °»½Å¿¡¼ ½Ã½ºÅÛ Ä«Å»·Î±×ÀÇ UDF Åë°è¸¦ °»½ÅÇÏ´Â ¹æ¹ý¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀ» ÂüÁ¶ÇϽʽÿÀ.
CREATE FUNCTION¹®À» »ç¿ëÇÏ¿© ƯÁ¤ÇÑ ÀÀ¿ëÇÁ·Î±×·¥¿¡ ¸Â´Â UDF¸¦ ÀÛ¼ºÇÏ´Â ¹æ¹ý¿¡ ´ëÇØ¼´Â ÀÀ¿ëÇÁ·Î±×·¥ °³¹ß ¾È³»¼¿¡¼ ÀÚ¼¼ÇÑ ³»¿ëÀ» ÂüÁ¶ÇϽʽÿÀ. UDF ±¸¹®¿¡ ´ëÇØ¼´Â SQL ÂüÁ¶¼¿¡¼ ÀÚ¼¼ÇÑ ³»¿ëÀ» ÂüÁ¶ÇϽʽÿÀ.
¿¬ÇÕ µ¥ÀÌÅͺ£À̽º¿¡¼ Áö¿ª ÇÔ¼ö ¶Ç´Â Áö¿ª ÇÔ¼ö ÅÛÇø®Æ®(ÇÔ¼ö ÅÛÇø®Æ® ÀÛ¼º¿¡¼ ¼³¸í)¸¦ Çϳª ÀÌ»óÀÇ µ¥ÀÌÅÍ ¼Ò½º¿¡¼ ÇÔ¼ö¿Í ÇÔ²² ¸ÊÇÒ ¶§ ÇÔ¼ö ¸ÊÇÎÀ» ÀÛ¼ºÇϽʽÿÀ. ±âº» ÇÔ¼ö ¸ÊÇÎÀº ¸¹Àº µ¥ÀÌÅÍ ¼Ò½º ÇÔ¼ö¿¡ Á¦°øµË´Ï´Ù.
ÇÔ¼ö ¸ÊÇÎÀº ´ÙÀ½°ú °°Àº °æ¿ì¿¡ À¯¿ëÇÕ´Ï´Ù.
CREATE FUNCTION MAPPING¹®À¸·Î Á¤ÀÇµÈ ÇÔ¼ö ¸ÊÇÎÀº ¿¬ÇÕ µ¥ÀÌÅͺ£À̽º¿¡ ÀúÀåµË´Ï´Ù.
ÇÔ¼ö(¶Ç´Â ÇÔ¼ö ÅÛÇø®Æ®)¿¡´Â µ¥ÀÌÅÍ ¼Ò½º ÇÔ¼ö¿Í µ¿ÀÏÇÑ ¼öÀÇ ÀÔ·Â ¸Å°³º¯¼ö°¡ ÀÖ¾î¾ß ÇÕ´Ï´Ù. Ãß°¡·Î, ¿¬ÇÕ ÃøÀÇ ÀÔ·Â ¸Å°³º¯¼öÀÇ µ¥ÀÌÅÍ À¯ÇüÀº µ¥ÀÌÅÍ ¼Ò½º ÃøÀÇ ÀÔ·Â ¸Å°³º¯¼öÀÇ µ¥ÀÌÅÍ À¯Çü°ú ȣȯ °¡´ÉÇØ¾ß ÇÕ´Ï´Ù.
CREATE FUNCTION MAPPING¹®À» »ç¿ëÇÏ¿© ÇÔ¼ö ¸ÊÇÎÀ» ÀÛ¼ºÇϽʽÿÀ. ¿¹¸¦ µé¾î, Oracle1 ¼¹ö¿¡¼ Oracle AVGNEW ÇÔ¼ö¿Í DB2 µ¿µî ÇÔ¼ö°£¿¡ ÇÔ¼ö ¸ÊÇÎÀ» ÀÛ¼ºÇÏ·Á¸é, ´ÙÀ½À» ÀÔ·ÂÇϽʽÿÀ.
CREATE FUNCTION MAPPING ORAVGNEW FOR SYSIBM.AVG(INT) SERVER ORACLE1 OPTIONS (REMOTE_NAME 'AVGNEW')
¿¬ÇÕ µ¥ÀÌÅͺ£À̽º¿¡¼ SYSADM ¶Ç´Â DBADM ±ÇÇÑ Áß Çϳª¸¦ º¸À¯ÇÏ¿© ÀÌ ¸í·É¹®À» »ç¿ëÇØ¾ß ÇÕ´Ï´Ù. ÇÔ¼ö ¸ÊÇÎ ¼Ó¼ºÀº SYSCAT.FUNCMAPPINGS¿¡ ÀúÀåµË´Ï´Ù.
¿¬ÇÕ ¼¹ö´Â ÀԷ ȣ½ºÆ® º¯¼ö¸¦ ¹ÙÀεåÇϰųª LOB, LONG VARCHAR/VARGRAPHIC, DATALINK, ±¸ºÐ À¯Çü ¹× ±¸Á¶ÈµÈ À¯ÇüÀÇ °á°ú¸¦ °Ë»öÇÏÁö ¾Ê½À´Ï´Ù. ÀÔ·Â ¸Å°³º¯¼ö ¶Ç´Â ¸®ÅÏµÈ °ª¿¡ À̵é À¯Çü Áß Çϳª°¡ Æ÷ÇԵǸé, ÇÔ¼ö ¸ÊÇÎÀÌ ÀÛ¼ºµÉ ¼ö ¾ø½À´Ï´Ù.
ÇÔ¼ö ¸ÊÇÎ »ç¿ë ¹× ÀÛ¼º¿¡ ´ëÇØ¼´Â ÀÀ¿ëÇÁ·Î±×·¥ °³¹ß ¾È³»¼¿¡¼ ÀÚ¼¼ÇÑ ³»¿ëÀ» ÂüÁ¶ÇϽʽÿÀ. CREATE FUNCTION MAPPING ±¸¹®¿¡ ´ëÇØ¼´Â SQL ÂüÁ¶¼¿¡¼ ÀÚ¼¼ÇÑ ³»¿ëÀ» ÂüÁ¶ÇϽʽÿÀ.
¿¬ÇÕ ½Ã½ºÅÛ¿¡¼ ÇÔ¼ö ÅÛÇø®Æ®´Â ÇÔ¼ö ¸ÊÇο¡ ´ëÇÑ "¾ÞÄ¿"¸¦ Á¦°øÇÕ´Ï´Ù. À̸¦ »ç¿ëÇÏ¿© ÇØ´ç DB2 ÇÔ¼ö°¡ ¿¬ÇÕ ¼¹ö¿¡ ¾øÀ» ¶§ µ¥ÀÌÅÍ ¼Ò½º ÇÔ¼öÀÇ ¸ÊÇÎÀ» ÀÛµ¿ÇÒ ¼ö ÀÖ°Ô ÇÕ´Ï´Ù. ÇÔ¼ö ¸ÊÇο¡¼´Â DB2¿¡ ÇÔ¼ö ÅÛÇø®Æ® ¶Ç´Â ±âÁ¸ÀÇ ºñ½ÁÇÑ ÇÔ¼ö°¡ ÀÖ¾î¾ß ÇÕ´Ï´Ù.
ÅÛÇø®Æ®´Â ´ÜÁö ÇÔ¼ö ½©ÀÏ »ÓÀÔ´Ï´Ù. ÀÌ´Â À̸§, ÀÔ·Â ¸Å°³º¯¼ö ¹× ¸®ÅÏ °ªÀÔ´Ï´Ù. ÇÔ¼ö¿¡ ´ëÇÑ Áö¿ª ½ÇÇà ÆÄÀÏÀÌ ¾ø½À´Ï´Ù.
ÇÔ¼ö¿¡ ´ëÇÑ Áö¿ª ½ÇÇà ÆÄÀÏÀÌ ¾øÀ¸¹Ç·Î, ÇÔ¼ö¸¦ µ¥ÀÌÅÍ ¼Ò½º¿¡¼ »ç¿ëÇÒ ¼ö´Â À־ ÇÔ¼ö ÅÛÇø®Æ®¸¦ È£ÃâÇÒ ¼ö ¾ø°Ô µÉ ¼öµµ ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, ´ÙÀ½ Á¶È¸¸¦ °í·ÁÇØ º¸½Ê½Ã¿À.
SELECT myfunc(C1) FROM nick1 WHERE C2 < 'A'
DB2 ¹× nick1·Î ÂüÁ¶µÇ´Â ¿ÀºêÁ§Æ®°¡ µé¾î ÀÖ´Â µ¥ÀÌÅÍ ¼Ò½º¿¡ µ¿ÀÏÇÑ Á¶ÇÕ ¼ø¼°¡ ¾øÀ¸¸é, ÇÔ¼ö°¡ µ¥ÀÌÅÍ ¼Ò½º¿¡ ÀÖ´Â µ¿¾È DB2¿¡¼ ºñ±³°¡ ÀÌ·ç¾îÁ®¾ß ÇϹǷΠÁ¶È¸´Â ½ÇÆÐÇÕ´Ï´Ù. Á¶ÇÕ ¼ø¼°¡ °°À¸¸é, ºñ±³ Á¶ÀÛÀº myfunc·Î ÂüÁ¶µÇ´Â ±âÃÊ ÇÔ¼ö°¡ ÀÖ´Â µ¥ÀÌÅÍ ¼Ò½º¿¡¼ ÀÌ·ç¾îÁú¼ö ÀÖ½À´Ï´Ù.
ÇÔ¼ö(¶Ç´Â ÇÔ¼ö ÅÛÇø®Æ®)¿¡´Â µ¥ÀÌÅÍ ¼Ò½º ÇÔ¼ö¿Í µ¿ÀÏÇÑ ¼öÀÇ ÀÔ·Â ¸Å°³º¯¼ö°¡ ÀÖ¾î¾ß ÇÕ´Ï´Ù. ¿¬ÇÕÃøÀÇ ÀÔ·Â ¸Å°³º¯¼öÀÇ µ¥ÀÌÅÍ À¯ÇüÀº µ¥ÀÌÅÍ ¼Ò½ºÃøÀÇ ÀÔ·Â ¸Å°³º¯¼öÀÇ µ¥ÀÌÅÍ À¯Çü°ú ȣȯ °¡´ÉÇØ¾ß ÇÕ´Ï´Ù. ÀÌµé ¿ä±¸»çÇ×Àº ¸®ÅÏ °ª¿¡µµ Àû¿ëµË´Ï´Ù.
CREATE FUNCTION¹®À» AS TEMPLATE Ű¿öµå¿Í ÇÔ²² »ç¿ëÇÏ¿© ÇÔ¼ö ÅÛÇø®Æ®¸¦ ÀÛ¼ºÇϽʽÿÀ. ÅÛÇø®Æ®°¡ ÀÛ¼ºµÈ ÈÄ CREATE FUNCTION MAPPING¹®À» »ç¿ëÇÏ¿© ÅÛÇø®Æ®¸¦ µ¥ÀÌÅÍ ¼Ò½º¿¡ ¸ÊÇÕ´Ï´Ù.
¿¹¸¦ µé¾î, ¼¹ö S1¿¡¼ ÇÔ¼ö MTS1FUNC¿¡ ´ëÇÑ ÇÔ¼ö ÅÛÇø®Æ® ¹× ÇÔ¼ö ¸ÊÇÎÀ» ÀÛ¼ºÇÏ·Á¸é, ´ÙÀ½À» ÀÔ·ÂÇϽʽÿÀ.
CREATE FUNCTION MYFUNC(INT) RETURNS INT AS TEMPLATE CREATE FUNCTION MAPPING S1_MYFUNC FOR MYFUNC(INT) SERVER S1 OPTIONS (REMOTE_NAME 'MYS1FUNC')
ÇÔ¼ö ÅÛÇø®Æ® »ç¿ë ¹× ÀÛ¼º¿¡ ´ëÇØ¼´Â ÀÀ¿ëÇÁ·Î±×·¥ °³¹ß ¾È³»¼¿¡¼ ÀÚ¼¼ÇÑ ³»¿ëÀ» ÂüÁ¶ÇϽʽÿÀ. CREATE FUNCTION ±¸¹®¿¡ ´ëÇØ¼´Â SQL ÂüÁ¶¼¿¡¼ ÀÚ¼¼ÇÑ ³»¿ëÀ» ÂüÁ¶ÇϽʽÿÀ.