´ÙÀ½Àº UDF ¹× ¸Þ¼Òµå¸¦ ÄÚµåÈÇϱâ Àü¿¡ ¾Ë¾Æ¾ß ÇÒ ÁÖ¿ä °³³äÀÔ´Ï´Ù.
ÇÔ¼öÀÇ Àüü À̸§Àº <schema-name>.<function-name>ÀÔ´Ï´Ù. ÇÔ¼ö¸¦ ÂüÁ¶ÇÒ ¼ö ÀÖ´Â °æ¿ì ÀÌ Àüü À̸§À» »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î ´ÙÀ½°ú °°½À´Ï´Ù.
SLICKO.BOAT_COMPARE SMITH.FOO SYSIBM.SUBSTR SYSFUN.FLOOR
±×·¯³ª, DB2°¡ »ç¿ëÀÚ°¡ ÂüÁ¶Çϰí ÀÖ´Â ÇÔ¼ö¸¦ ½Äº°ÇؾßÇÒ °æ¿ì <schema-name>.µµ »ý·«ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î ´ÙÀ½°ú °°½À´Ï´Ù.
BOAT_COMPARE FOO SUBSTR FLOOR
ÇÔ¼ö °æ·ÎÀÇ °³³äÀº schema-nameÀ» »ç¿ëÇÏÁö ¾ÊÀ» ¶§ ¹ß»ýÇÏ´Â ±ÔÁ¤ÈµÇÁö ¾ÊÀº ÂüÁ¶ÀÇ DB2 ºÐ¼®¿¡ Áß¿äÇÕ´Ï´Ù. ÇÔ¼ö¸¦ ÂüÁ¶ÇÏ´Â DDL¹®¿¡¼ÀÇ ÇÔ¼ö °æ·Î »ç¿ë¿¡ ´ëÇØ¼´Â SQL ÂüÁ¶¼ÀÇ ³»¿ëÀ» ÂüÁ¶ÇϽʽÿÀ. ÇÔ¼ö °æ·Î´Â ½ºÅ°¸¶ À̸§ÀÇ ¼ø¼ÈµÈ ¸ñ·ÏÀÔ´Ï´Ù. ÇÔ¼ö °æ·Î´Â UDT »Ó¸¸ ¾Æ´Ï¶ó UDF ¹× ¸Þ¼Òµå¿¡ ´ëÇÑ ±ÔÁ¤ÈµÇÁö ¾ÊÀº ÇÔ¼ö ÂüÁ¶ ºÐ¼®¿ë ½ºÅ°¸¶ ¼¼Æ®µµ Á¦°øÇÕ´Ï´Ù. ÇÔ¼ö ÂüÁ¶°¡ °æ·ÎÀÇ ¿©·¯ ½ºÅ°¸¶¿¡ ÀÖ´Â ÇÔ¼ö¿Í ÀÏÄ¡ÇÒ °æ¿ì °æ·ÎÀÇ ½ºÅ°¸¶ ¼ø¼¸¦ »ç¿ëÇÏ¿© ÀÌ·¯ÇÑ ÀÏÄ¡¸¦ ºÐ¼®ÇÕ´Ï´Ù. ÇÔ¼ö °æ·Î´Â Á¤Àû SQL¿¡ ´ëÇÑ »çÀüó¸® ÄÄÆÄÀÏ ¹× ¹ÙÀÎµå ¸í·É¿¡ ´ëÇÑ FUNCPATH ¿É¼ÇÀ» ÀÌ¿ëÇÏ¿© ¼³Á¤µË´Ï´Ù. ÇÔ¼ö °æ·Î´Â µ¿Àû SQL¿¡ ´ëÇÑ SET CURRENT FUNCTION PATH¹®¿¡ ÀÇÇØ ¼³Á¤µË´Ï´Ù. ÇÔ¼ö °æ·ÎÀÇ ±âº»°ªÀº ´ÙÀ½°ú °°½À´Ï´Ù.
"SYSIBM","SYSFUN","<ID>"
À̰ÍÀº Á¤Àû SQL°ú µ¿Àû SQL ¸ðµÎ¿¡ Àû¿ëµË´Ï´Ù. ¿©±â¼ <ID>´Â ÇöÀç ¸í·É¹® ±ÇÇÑ ºÎ¿© ID¸¦ Ç¥½ÃÇÕ´Ï´Ù.
ÇÔ¼ö À̸§Àº ¿À¹ö·ÎµåµÉ ¼ö ÀÖ½À´Ï´Ù. ÀÌ´Â °°Àº ½ºÅ°¸¶¿¡¼µµ ¿©·¯ °³ÀÇ ÇÔ¼ö°¡ °°Àº À̸§À» °¡Áú ¼ö ÀÖÀ½À» ÀǹÌÇÕ´Ï´Ù. ±×·¯³ª µÎ ÇÔ¼ö´Â °°Àº ½ÅÈ£(signature)¸¦ °¡Áú ¼ö ¾ø½À´Ï´Ù. Á¤ÀÇµÈ ¼ø¼·Î ¸ðµç ÇÔ¼ö ¸Å°³º¯¼öÀÇ Á¤ÀÇµÈ µ¥ÀÌÅÍ À¯Çü°ú ¿¬°áµÈ ±ÔÁ¤ÈµÈ ÇÔ¼ö À̸§À¸·Î Á¤ÀÇµÉ ¼ö ÀÖ½À´Ï´Ù. ¿À¹ö·ÎµåµÈ ÇÔ¼öÀÇ ¿¹´Â ¿¹: BLOB ¹®ÀÚ¿ °Ë»öÀÇ ³»¿ëÀ» ÂüÁ¶ÇϽʽÿÀ.
±ÔÁ¤ÈµÈ ÂüÁ¶ÀÌµç ±ÔÁ¤ÈµÇÁö ¾ÊÀº ÂüÁ¶À̵ç, ¸ðµç ÇÔ¼ö ÂüÁ¶¿¡ °¡Àå Àß ¸Â´Â °ÍÀ» ¼±ÅÃÇϱâ À§ÇØ ÇÔ¼ö °æ·Î ¹× ¿À¹ö·Îµå¸¦ °í·ÁÇÏ´Â ÇÔ¼ö ¼±Åà ¾Ë°í¸®ÁòÀÔ´Ï´Ù. ³»Àå ÇÔ¼ö ¹× SYSFUN ½ºÅ°¸¶¿¡ ÀÖ´Â (IBM Á¦°ø) ÇÔ¼ö¿¡ ´ëÇÑ ÂüÁ¶µµ ÇÔ¼ö ¼±Åà ¾Ë°í¸®ÁòÀ» ÅëÇØ 󸮵˴ϴÙ.
°¢ »ç¿ëÀÚ Á¤ÀÇ ÇÔ¼ö(UDF)´Â ½ºÄ®¶ó, Ä÷³ ¶Ç´Â Å×À̺í ÇÔ¼ö·Î ºÐ·ùµË´Ï´Ù. ½ºÄ®¶ó ÇÔ¼ö´Â È£ÃâµÉ ¶§¸¶´Ù ´ÜÀÏ °ª ÀÀ´äÀ» ¸®ÅÏÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, ³»Àå ÇÔ¼ö SUBSTR()Àº ½ºÄ®¶ó ÇÔ¼öÀÔ´Ï´Ù. ½ºÄ®¶ó UDF ¹× ¸Þ¼Òµå´Â (C¿Í °°ÀºÇÁ·Î±×·¡¹Ö ¾ð¾î·Î ÄÚµåȵÈ) ¿ÜºÎ ¶Ç´Â (±âÁ¸ ÇÔ¼öÀÇ ±¸ÇöÀ» »ç¿ëÇÏ´Â) ¼Ò½º°¡ µÉ ¼ö ÀÖ½À´Ï´Ù.
Ä÷³ ÇÔ¼ö´Â À¯»ç ÇÔ¼ö ¼¼Æ®(µ¥ÀÌÅÍ Ä÷³)¸¦ ¹Þ¾Æ ÀÌ °ª ¼¼Æ®·ÎºÎÅÍ ´ÜÀÏ °ª ÀÀ´äÀ» ¸®ÅÏÇÕ´Ï´Ù. DB2¿¡¼´Â À̸¦ ÃѰè ÇÔ¼ö¶ó°íµµ ÇÕ´Ï´Ù. Ä÷³ ÇÔ¼öÀÇ ¿¹·Î´Â ³»Àå ÇÔ¼ö AVG()°¡ ÀÖ½À´Ï´Ù. ¿ÜºÎ Ä÷³ UDF´Â DB2·Î Á¤ÀÇµÉ ¼ö ¾øÁö¸¸, ³»Àå Ä÷³ ÇÔ¼ö Áß Çϳª¿¡ ¼Ò½º°¡ ÀÖ´Â Ä÷³ UDF¸¦ Á¤ÀÇÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ´Â ±¸º° À¯Çü¿¡ À¯¿ëÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, INTEGER ±¸º° À¯ÇüÀ¸·Î Á¤ÀÇµÈ SHOESIZE°¡ Á¸ÀçÇÏ´Â °æ¿ì, ±âÁ¸ÀÇ ³»Àå Ä÷³ ÇÔ¼ö, AVG(INTEGER)¿¡ ¼Ò½º°¡ ÀÖ´Â Ä÷³ ÇÔ¼ö·Î¼ UDF, AVG(SHOESIZE)¸¦ Á¤ÀÇÇÒ ¼ö ÀÖ½À´Ï´Ù.
Å×À̺í ÇÔ¼ö´Â Å×À̺íÀ» ÂüÁ¶ÇÏ´Â SQL¹®À¸·Î Å×À̺íÀ» ¸®ÅÏÇÕ´Ï´Ù. Å×À̺í ÇÔ¼ö´Â SELECT¹®ÀÇ FROMÀý¿¡¼¸¸ ÂüÁ¶µÉ ¼ö ÀÖ½À´Ï´Ù. ±×·¯ÇÑ ÇÔ¼ö¸¦ »ç¿ëÇÏ¿© ºñ-DB2 µ¥ÀÌÅÍ¿¡ SQL ¾ð¾î¸¦ Àû¿ë½ÃŰ°Å³ª, ÀÌ·± µ¥ÀÌÅ͸¦ ĸÃÄÇØ¼ DB2 Å×ÀÌºí¿¡ µÑ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, ÀÌ´Â ºñ-DB2 µ¥ÀÌÅÍ·Î ±¸¼ºµÈ ÆÄÀÏÀ» Å×À̺í·Î µ¿Àû º¯È¯½ÃŰ°Å³ª WWW ¶Ç´Â ¿î¿µ üÁ¦¿¡¼ µ¥ÀÌÅ͸¦ °Ë»öÇÏ°í µ¥ÀÌÅ͸¦ Å×À̺í·Î ¸®ÅÏÇÒ ¼ö ÀÖ½À´Ï´Ù. Å×À̺í ÇÔ¼ö´Â ¿ÜºÎ ÇÔ¼ö¸¸ µÉ ¼ö ÀÖ½À´Ï´Ù.
ÇÔ¼ö ¼±Åà ¾Ë°í¸®Áò, SET CURRENT FUNCTION PATH¹® ¹× ÇÔ¼ö °æ·ÎÀÇ °³³äÀº SQL ÂüÁ¶¼¿¡ »ó¼¼ÇÏ°Ô ³íÀǵǾî ÀÖ½À´Ï´Ù. FUNCPATH »çÀü ó¸® ÄÄÆÄÀÏ ¹× ¹ÙÀÎµå ¿É¼Ç¿¡ ´ëÇØ¼´Â Command Reference¿¡ »ó¼¼È÷ ³íÀǵǾî ÀÖ½À´Ï´Ù.
¿¬ÇÕ ½Ã½ºÅÛ¿¡¼ UDF¿Í ¸Þ¼Òµå ¹× ³»Àå ÇÔ¼ö¸¦ µ¥ÀÌÅÍ ¼Ò½º ÇÔ¼ö·Î ¸ÊÇÎÇÏ´Â °³³ä¿¡ ´ëÇØ¼´Â SQL ÂüÁ¶¼ÀÇ ³»¿ëÀ» ÂüÁ¶ÇϽʽÿÀ. ÀÌ·¯ÇÑ ¸ÊÇÎ ÀÛ¼º ¹æ¹ý¿¡ ´ëÇØ¼´Â µ¥ÀÌÅÍ ¼Ò½º ÇÔ¼ö È£ÃâÀÇ ³»¿ëÀ» ÂüÁ¶ÇϽʽÿÀ.