»ç¿ëÀÚ Á¤ÀÇ À¯Çü(UDT)Àº »ç¿ëÀÚ°¡ µ¥ÀÌÅͺ£À̽º¿¡ ÀÛ¼ºÇÑ À̸§ ÁöÁ¤µÈ µ¥ÀÌÅÍ À¯ÇüÀÔ´Ï´Ù. UDT´Â ³»Àå µ¥ÀÌÅÍ À¯Çü°ú °øÅëµÈ Ç¥ÇöÀ» °øÀ¯ÇÏ´Â ±¸º° À¯ÇüÀϼöµµ ÀÖ°í °¢°¢ À¯ÇüÀ» °¡Áö´Â À̸§ ÁöÁ¤µÈ ¼Ó¼º ¼ø¼¸¦ °®´Â ±¸Á¶È À¯ÇüÀϼöµµ ÀÖ½À´Ï´Ù. ±¸Á¶È À¯ÇüÀº À¯Çü °èÃþÀ» Á¤ÀÇÇÏ´Â ´Ù¸¥ ±¸Á¶È À¯Çü(»óÀ§ À¯ÇüÀ̶ó ÇÔ)ÀÇ ºÎ¼Ó À¯ÇüÀÏ ¼ö ÀÖ½À´Ï´Ù.
UDT´Â °·ÂÇÑ À¯Çü ºÐ·ù¸¦ Áö¿øÇÕ´Ï´Ù. Áï, UDT°¡ ´Ù¸¥ À¯Çü°ú µ¿ÀÏÇÑ Ç¥ÇöÀ» °øÀ¯ÇÏ´õ¶óµµ ÇØ´ç UDT °ªÀº µ¿ÀÏÇÑ UDT ¶Ç´Â µ¿ÀÏÇÑ À¯Çü °èÃþÀÇ UDT °ªÇÏ°í¸¸ ȣȯµÇ´Â °ÍÀ¸·Î °£Áֵ˴ϴÙ.
SYSCAT.DATATYPES īŻ·Î±× ºä¸¦ »ç¿ëÇÏ¸é µ¥ÀÌÅͺ£À̽º¿¡ ´ëÇØ Á¤ÀÇµÈ UDT¸¦ º¼ ¼ö ÀÖ½À´Ï´Ù. ÀÌ Ä«Å»·Î±× ºä¿¡¼´Â ¶ÇÇÑ µ¥ÀÌÅͺ£À̽º°¡ ÀÛ¼ºµÉ ¶§ µ¥ÀÌÅͺ£À̽º °ü¸® ÇÁ·Î±×·¥¿¡ ÀÇÇØ Á¤ÀÇµÈ µ¥ÀÌÅÍ À¯ÇüÀ» º¸¿©ÁÝ´Ï´Ù. ¸ðµç µ¥ÀÌÅÍ À¯ÇüÀÇ ¿ÏÀüÇÑ ¸ñ·ÏÀº SQL ÂüÁ¶¼¿¡¼ ÀÚ¼¼ÇÑ ³»¿ëÀ» ÂüÁ¶ÇϽʽÿÀ.
UDT´Â ´ëºÎºÐÀÇ ½Ã½ºÅÛ Á¦°ø ÇÔ¼ö ¶Ç´Â ³»Àå ÇÔ¼öÀÇ Àμö·Î´Â »ç¿ëµÉ ¼ö ¾ø½À´Ï´Ù. ÀÌ·¯ÇÑ Á¶ÀÛ ¹× ±âŸ ´Ù¸¥ Á¶ÀÛÀ» ÀÛµ¿½ÃŰ·Á¸é »ç¿ëÀÚ Á¤ÀÇ ÇÔ¼ö°¡ Á¦°øµÇ¾î¾ß ÇÕ´Ï´Ù.
´ÙÀ½ °æ¿ì¿¡¸¸ UDT¸¦ »èÁ¦ÇÒ ¼ö ÀÖ½À´Ï´Ù.
UDT°¡ »èÁ¦µÇ¸é, Á¾¼ÓµÈ ´Ù¸¥ ÇÔ¼öµµ »èÁ¦µË´Ï´Ù.
»ç¿ëÀÚ Á¤ÀÇ ±¸º° À¯ÇüÀº Á¤¼ö, ½ÊÁø¼ö ¶Ç´Â ¹®ÀÚ À¯Çü°ú °°Àº ±âÁ¸ À¯Çü¿¡¼ ÆÄ»ýµÈ µ¥ÀÌÅÍ À¯ÇüÀÔ´Ï´Ù. CREATE DISTINCT TYPE¹®À» »ç¿ëÇÏ¿© ±¸º° À¯ÇüÀ» ÀÛ¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù.
´ÙÀ½ SQL¹®Àº ±¸º° À¯Çü t_educ¸¦ smallint·Î ÀÛ¼ºÇÕ´Ï´Ù.
CREATE DISTINCT TYPE T_EDUC AS SMALLINT WITH COMPARISONS
WITH COMPARISONSÀýÀÌ CREATE DISTINCT TYPE¹®¿¡ ÁöÁ¤µÈ °æ¿ì(¿¹¿¡¼Ã³·³), µ¿ÀÏÇÑ ±¸º° À¯ÇüÀÇ ÀνºÅϽº°¡ ¼·Î ºñ±³µÉ ¼ö ÀÖ½À´Ï´Ù. ¼Ò½º µ¥ÀÌÅÍ À¯ÇüÀÌ ´ëÇü ¿ÀºêÁ§Æ®(LOB), DATALINK, LONG VARCHAR ¶Ç´Â LONG VARGRAPHIC À¯ÇüÀÎ °æ¿ì WITH COMPARISONSÀýÀ» ÁöÁ¤ÇÒ ¼ö ¾ø½À´Ï´Ù.
±¸º° À¯ÇüÀÇ ÀνºÅϽº´Â ¼Ò½º À¯Çü¿¡ Á¤ÀÇµÈ Á¶ÀÛÀÇ ÇÔ¼öÀÇ Àμö ¶Ç´Â ÇÇ¿¬»êÀڷμ »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù. ¸¶Âù°¡Áö·Î, ¼Ò½º À¯ÇüÀº ±¸º° À¯ÇüÀ» »ç¿ëÇϵµ·Ï Á¤ÀÇµÈ Àμö ¶Ç´Â ÇÇ¿¬»êÀÚ¿¡´Â »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù.
ÀÏ´Ü ±¸º° À¯ÇüÀ» ÀÛ¼ºÇϸé, À̸¦ »ç¿ëÇÏ¿© CREATE TABLE¹®¿¡¼ Ä÷³À» Á¤ÀÇÇÒ ¼ö ÀÖ½À´Ï´Ù.
CREATE TABLE EMPLOYEE (EMPNO CHAR(6) NOT NULL, FIRSTNME VARCHAR(12) NOT NULL, LASTNAME VARCHAR(15) NOT NULL, WORKDEPT CHAR(3), PHONENO CHAR(4), PHOTO BLOB(10M) NOT NULL, EDLEVEL T_EDUC) IN RESOURCE
±¸º° À¯ÇüÀ» ÀÛ¼ºÇϸé, ±¸º° À¯Çü°ú ¼Ò½º À¯Çü »çÀÌÀÇ º¯È¯ Áö¿ø ¶ÇÇÑ »ý¼ºµË´Ï´Ù. T_EDUC À¯Çü °ªÀ» SMALLINT °ªÀ¸·Î º¯È¯Çϰí SMALLINT °ªÀ» T_EDUC °ªÀ¸·Î º¯È¯ÇÒ ¼ö ÀÖ½À´Ï´Ù.
CREATE DISTINCT TYPE¹®¿¡ ´ëÇÑ ¿ÏÀüÇÑ ±¸¹® Á¤º¸´Â SQL ÂüÁ¶¼¿¡¼ ÀÚ¼¼ÇÑ ³»¿ëÀ» ÂüÁ¶ÇϽʽÿÀ. ±¸º° À¯Çü ÀÛ¼º ¹× »ç¿ë¿¡ ´ëÇØ¼´Â ÀÀ¿ëÇÁ·Î±×·¥ °³¹ß ¾È³»¼¿¡¼ ÀÚ¼¼ÇÑ ³»¿ëÀ» ÂüÁ¶ÇϽʽÿÀ.
º¯È¯À» »ç¿ëÇÏ¿© UDT¸¦ ±âº» µ¥ÀÌÅÍ À¯ÇüÀ¸·Î º¯È¯ÇÏ°í ±âº» µ¥ÀÌÅÍ À¯ÇüÀ» UDT·Î º¯È¯ÇÒ ¼ö ÀÖ½À´Ï´Ù. º¯È¯ ÇÔ¼öÀÇ ÀÛ¼ºÀº CREATE TRANSFORM¹®À» ÅëÇØ ÀÌ·ç¾îÁý´Ï´Ù.
º¯È¯ Áö¿øÀº CREATE METHOD¹® ¹× CREATE FUNCTION¹®ÀÇ È®ÀåÀ» ÅëÇØ ¾òÀ» ¼öµµ ÀÖ½À´Ï´Ù. ÀÌ Áö¿ø¿¡ ´ëÇØ¼´Â SQL ÂüÁ¶¼¿¡¼ ÀÚ¼¼ÇÑ ³»¿ëÀ» ÂüÁ¶ÇϽʽÿÀ.
±¸Á¶È À¯ÇüÀº °¢°¢ À̸§°ú ÀÚü µ¥ÀÌÅÍ À¯ÇüÀÌ ÀÖ´Â Çϳª ÀÌ»óÀÇ ¼Ó¼ºÀ» Æ÷ÇÔÇÏ´Â »ç¿ëÀÚ Á¤ÀÇ À¯ÇüÀÔ´Ï´Ù. ±¸Á¶È À¯ÇüÀº Å×À̺í À¯ÇüÀ¸·Î »ç¿ëµÉ ¼ö Àִµ¥, Å×À̺íÀÇ °¢ Ä÷³Àº À̸§°ú µ¥ÀÌÅÍ À¯ÇüÀ» ±¸Á¶È À¯ÇüÀÇ ¼Ó¼º Áß Çϳª¿¡¼ °¡Á®¿É´Ï´Ù. ÀÀ¿ëÇÁ·Î±×·¥ °³¹ß ¾È³»¼¿¡¼ ±¸Á¶ÈµÈ À¯Çü¿¡ ÇÊ¿äÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀ» ÂüÁ¶ÇϽʽÿÀ.
¿¬ÇÕ ½Ã½ºÅÛ¿¡¼ À¯Çü ¸ÊÇÎÀ» ÅëÇØ µ¥ÀÌÅÍ ¼Ò½º Å×ÀÌºí¿¡ Àִ ƯÁ¤ µ¥ÀÌÅÍ À¯Çü ¹× ºä¸¦ DB2 ±¸º° µ¥ÀÌÅÍ À¯Çü¿¡ ¸ÊÇÒ ¼ö ÀÖ½À´Ï´Ù. À¯Çü ¸ÊÇÎÀº ÇϳªÀÇ µ¥ÀÌÅÍ ¼Ò½º ¶Ç´Â µ¥ÀÌÅÍ ¼Ò½ºÀÇ ¹üÀ§(À¯Çü, ¹öÀü)¿¡ Àû¿ëµÉ ¼ö ÀÖ½À´Ï´Ù.
±âº» µ¥ÀÌÅÍ À¯Çü ¸ÊÇÎÀº ³»ÀåµÈ µ¥ÀÌÅÍ ¼Ò½º À¯Çü°ú ³»ÀåµÈ DB2 À¯Çü¿¡ Á¦°øµË´Ï´Ù. »õ µ¥ÀÌÅÍ À¯Çü ¸ÊÇÎ(»ç¿ëÀÚ°¡ ÀÛ¼ºÇÏ´Â)Àº SYSCAT.TYPEMAPPINGS ºä¿¡ ³ª¿µË´Ï´Ù.
CREATE TYPE MAPPING¹®À¸·Î À¯Çü ¸ÊÇÎÀ» ÀÛ¼ºÇϽʽÿÀ. ¿¬ÇÕ µ¥ÀÌÅͺ£À̽º¿¡¼ SYSADM ¶Ç´Â DBADM ±ÇÇÑ Áß Çϳª¸¦ º¸À¯ÇÏ¿© ÀÌ ¸í·É¹®À» »ç¿ëÇØ¾ß ÇÕ´Ï´Ù.
À¯Çü ¸ÊÇÎ ¸í·É¹®ÀÇ ÇÑ ¿¹´Â ´ÙÀ½°ú °°½À´Ï´Ù.
CREATE TYPE MAPPING MY_ORACLE_DEC FROM SYSIBM.DECIMAL(10,2) TO SERVER ORACLE1 TYPE NUMBER([10..38],2)
LOB, LONG VARCHAR/VARGRAPHIC, DATALINK, ±¸Á¶È À¯Çü ¶Ç´Â ±¸º° À¯Çü¿¡ ´ëÇØ À¯Çü ¸ÊÇÎÀ» ÀÛ¼ºÇÒ ¼ö ¾ø½À´Ï´Ù.
À¯Çü ¸ÊÇÎ »ç¿ë ¹× ÀÛ¼º¿¡ ´ëÇØ¼´Â ÀÀ¿ëÇÁ·Î±×·¥ °³¹ß ¾È³»¼¿¡¼ ÀÚ¼¼ÇÑ ³»¿ëÀ» ÂüÁ¶ÇϽʽÿÀ. CREATE TYPE MAPPING ±¸¹®¿¡ ´ëÇØ¼´Â SQL ÂüÁ¶¼¿¡¼ ÀÚ¼¼ÇÑ ³»¿ëÀ» ÂüÁ¶ÇϽʽÿÀ.