Java°¡ ¾Æ´Ñ ¾ð¾î·Î ÀÛ¼ºµÈ ÀÀ¿ëÇÁ·Î±×·¥Àº ³Î(NULL) °ªÀ» ¹ÞÀ» ¼ö Àִ ȣ½ºÆ® º¯¼ö¿Í Ç¥½Ã±â º¯¼ö¸¦ ¿¬°áÇÏ¿© ³Î(NULL) °ª ¼ö½ÅÀ» ÁغñÇØ¾ß ÇÕ´Ï´Ù. Java ÀÀ¿ëÇÁ·Î±×·¥Àº È£½ºÆ® º¯¼öÀÇ °ªÀ» Java ³Î(NULL)À» ºñ±³ÇÏ¿© ¼ö½ÅµÈ °ªÀÌ ³Î(NULL)ÀÎÁö °áÁ¤ÇÕ´Ï´Ù. Ç¥½Ã±â º¯¼ö´Â µ¥ÀÌÅͺ£À̽º °ü¸® ÇÁ·Î±×·¥ ¹× È£½ºÆ® ÀÀ¿ëÇÁ·Î±×·¥ ¸ðµÎ°¡ °øÀ¯ÇϹǷÎ, Ç¥½Ã±â º¯¼ö´Â È£½ºÆ® º¯¼ö·Î¼ ÀÀ¿ëÇÁ·Î±×·¥¿¡¼ ¼±¾ðµÇ¾î¾ß ÇÕ´Ï´Ù. ÀÌ È£½ºÆ® º¯¼ö´Â SQL µ¥ÀÌÅÍ À¯Çü SMALLINT¿¡ ÀÏÄ¡ÇÕ´Ï´Ù.
Ç¥½Ã±â º¯¼ö´Â SQL¹®¿¡¼ È£½ºÆ® º¯¼ö ¹Ù·Î µÚ¿¡ ¿À°í, Á¢µÎºÎ°¡ ÄÝ·ÐÀÔ´Ï´Ù. °ø°£Àº È£½ºÆ® º¯¼ö·ÎºÎÅÍ Ç¥½Ã±â º¯¼ö¸¦ ºÐ¸®ÇÒ ¼ö ÀÖÁö¸¸ ÇÊ¿äÇÏÁö´Â ¾Ê½À´Ï´Ù. ±×·¯³ª, È£½ºÆ® º¯¼ö¿Í Ç¥½Ã±â º¯¼ö »çÀÌ¿¡ ½°Ç¥¸¦ ³ÖÁö ¸¶½Ê½Ã¿À. ¶ÇÇÑ, È£½ºÆ® º¯¼ö¿Í Ç¥½Ã±â »çÀÌ¿¡ ¼±ÅÃÀûÀÎ INDICATOR Ű¿öµå¸¦ »ç¿ëÇÏ¿© Ç¥½Ã±â º¯¼ö¸¦ ÁöÁ¤ÇÒ ¼öµµ ÀÖ½À´Ï´Ù.
Ç¥½Ã±â º¯¼ö¿¡´Â INDICATOR Ű¿öµå¸¦ »ç¿ëÇÏ¿© Áö¿ø È£½ºÆ® ¾ð¾î·Î Ç¥½Ã±â º¯¼ö ¿ë·Ê°¡ ³ª¿Í ÀÖ½À´Ï´Ù.
EXEC SQL FETCH C1 INTO :cm INDICATOR :cmind; if ( cmind < 0 ) printf( "Commission is NULL\n" );
#SQL { FETCH :c1 INTO :cm }; if ( cm == null ) System.out.println( "Commission is NULL\n" );
EXEC SQL FETCH C1 INTO :cm INDICATOR :cmind END-EXEC IF cmind LESS THAN 0 DISPLAY 'Commission is NULL'
EXEC SQL FETCH C1 INTO :cm INDICATOR :cmind IF ( cmind .LT. 0 ) THEN WRITE(*,*) 'Commission is NULL' ENDIF
±×¸²¿¡¼ cmind°¡ À½¼ö°ªÀÎÁö °ËÅäµË´Ï´Ù. À½¼ö°¡ ¾Æ´Ñ °æ¿ì ÀÀ¿ëÇÁ·Î±×·¥Àº cmÀÇ ¸®ÅÏ °ªÀ» »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. À½¼öÀÎ °æ¿ì ÆäÄ¡µÈ °ªÀº ³Î(NULL)À̰í cmÀº »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù. µ¥ÀÌÅͺ£À̽º °ü¸® ÇÁ·Î±×·¥Àº ÀÌ·± °æ¿ì È£½ºÆ® º¯¼ö °ªÀ» º¯°æÇÏÁö ¾Ê½À´Ï´Ù.
ÁÖ: | µ¥ÀÌÅͺ£À̽º ±¸¼º ¸Å°³º¯¼ö DFT_SQLMATHWARNÀÌ 'YES'·Î ¼³Á¤µÇ¸é cmind °ªÀº -2ÀÔ´Ï´Ù. ÀÌ´Â ¼öÄ¡ °á°ú °ªÀ» È£½ºÆ® º¯¼ö·Î º¯È¯ÇÏ´Â Áß¿¡ ¹ß»ýÇÑ ¿À¹öÇÃ·Î¿ì ¶Ç´Â »ê¼ú ¿À·ù°¡ Àִ ǥÇö½ÄÀ» »êÁ¤ÇÑ °á°ú ¹ß»ýÇÑ ³Î(NULL)ÀÓÀ» ³ªÅ¸³À´Ï´Ù. |
µ¥ÀÌÅÍ À¯ÇüÀÌ ³Î(NULL)À» ó¸®ÇÒ ¼ö ÀÖ´Â °æ¿ì ÀÀ¿ëÇÁ·Î±×·¥Àº NULL Ç¥½Ã±â¸¦ Á¦°øÇØ¾ß ÇÕ´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é ¿À·ù°¡ ¹ß»ýÇÒ ¼ö ÀÖ½À´Ï´Ù. NULL Ç¥½Ã±â°¡ »ç¿ëµÇÁö ¾ÊÀ¸¸é SQLCODE -305(SQLSTATE 22002)°¡ ¸®Åϵ˴ϴÙ.
SQLCA ±¸Á¶°¡ Àý´Ü °æ°í¸¦ Ç¥½ÃÇÒ °æ¿ì Ç¥½Ã±â º¯¼ö¿¡ Àý´ÜÀÌ ÀÖ´ÂÁö °ËÅäµË´Ï´Ù. Ç¥½Ã±â º¯¼ö°¡ ¾ç¼öÀ̸é Àý´ÜÀÌ ¹ß»ýÇÑ °ÍÀÔ´Ï´Ù.
INSERT¹® ¶Ç´Â UPDATE¹®À» ó¸®ÇÒ ¶§ µ¥ÀÌÅͺ£À̽º °ü¸® ÇÁ·Î±×·¥Àº Ç¥½Ã±â º¯¼ö¸¦ Á¡°ËÇÕ´Ï´Ù. Ç¥½Ã±â º¯¼ö°¡ À½¼öÀ̸é, µ¥ÀÌÅͺ£À̽º °ü¸® ÇÁ·Î±×·¥Àº NULLÀÌ Çã¿ëµÇ´Â °æ¿ì ¸ñÇ¥ Ä÷³ °ªÀ» NULL·Î ¼³Á¤ÇÕ´Ï´Ù. Ç¥½Ã±â º¯¼ö°¡ Á¦·Î ¶Ç´Â ¾ç¼öÀÌ¸é µ¥ÀÌÅͺ£À̽º °ü¸® ÇÁ·Î±×·¥Àº ¿¬°üµÈ È£½ºÆ® º¯¼ö °ªÀ» »ç¿ëÇÕ´Ï´Ù.
È£½ºÆ® º¯¼ö¿¡ ÁöÁ¤µÉ ¶§ ¹®ÀÚ¿ Ä÷³ °ªÀÌ Àý´ÜµÉ °æ¿ì SQLCA ±¸Á¶ÀÇ SQLWARN1 Çʵ忡 'X' ¶Ç´Â 'W'°¡ Æ÷Ç﵃ ¼ö ÀÖ½À´Ï´Ù. ³Î(NULL) Á¾·á±â°¡ Àý´ÜµÉ °æ¿ì 'N'ÀÌ Æ÷ÇԵ˴ϴÙ.
'X' °ªÀº ´ÙÀ½ ¸ðµç Á¶°ÇÀÌ ÃæÁ·µÇ´Â °æ¿ì¿¡¸¸ µ¥ÀÌÅͺ£À̽º °ü¸® ÇÁ·Î±×·¥¿¡ ÀÇÇØ ¸®Åϵ˴ϴÙ.
Ç¥½Ã±â º¯¼ö¿¡¼ ¸®ÅϵǴ °ªÀº ÀÀ¿ëÇÁ·Î±×·¥ÀÇ ÄÚµå ÆäÀÌÁö¿¡ ÀÖ´Â °á°ú ¹®ÀÚ¿ÀÇ ±æÀ̰¡ µË´Ï´Ù.
µ¥ÀÌÅÍ Àý´ÜÀÌ Æ÷ÇÔµÈ ±âŸ ¸ðµç °æ¿ì (NULL Á¾·á±â Àý´Ü°ú ¹Ý´ë·Î) µ¥ÀÌÅͺ£À̽º °ü¸® ÇÁ·Î±×·¥Àº 'W'¸¦ ¸®ÅÏÇÕ´Ï´Ù. ÀÌ·± °æ¿ì µ¥ÀÌÅͺ£À̽º °ü¸® ÇÁ·Î±×·¥Àº, ¼±Åà ¸ñ·Ï Ç׸ñ(ÀÀ¿ëÇÁ·Î±×·¥ ÄÚµå ÆäÀÌÁö³ª µ¥ÀÌÅÍ ±âº» ÄÚµå ÆäÀÌÁö ¶Ç´Â µÎ Ç׸ñ ¸ðµÎ ¾Æ´Ô)ÀÇ ÄÚµå ÆäÀÌÁö¿¡¼ °á°ú ¹®ÀÚ¿ ±æÀÌÀΠǥ½Ã±â º¯¼öÀÇ °ªÀ» ÀÀ¿ëÇÁ·Î±×·¥¿¡ ¸®ÅÏÇÕ´Ï´Ù. °ü·Ã Á¤º¸´Â SQL ÂüÁ¶¼ÀÇ ³»¿ëÀ» ÂüÁ¶ÇϽʽÿÀ.
Ä÷³ÀÌ ÀÛ¼ºµÉ ¶§ ¸ðµç DB2 Å×À̺íÀÇ °¢ Ä÷³¿¡´Â SQL µ¥ÀÌÅÍ À¯ÇüÀÌ Á¦°øµË´Ï´Ù. ÀÌ·¯ÇÑ À¯ÇüÀÌ Ä÷³¿¡ ÁöÁ¤µÇ´Â ¹æ½Ä¿¡ ´ëÇØ¼´Â SQL ÂüÁ¶¼ÀÇ CREATE TABLE¹®À» ÂüÁ¶ÇϽʽÿÀ. µ¥ÀÌÅͺ£À̽º °ü¸® ÇÁ·Î±×·¥Àº ´ÙÀ½°ú °°Àº Ä÷³ µ¥ÀÌÅÍ À¯ÇüÀ» Áö¿øÇÕ´Ï´Ù.
´ÙÀ½ µ¥ÀÌÅÍ À¯ÇüÀº 2¹ÙÀÌÆ® ¹®ÀÚ ¼¼Æ®(DBCS) ¹× Extended UNIX Code(EUC) ¹®ÀÚ ¼¼Æ® ȯ°æ¿¡¼¸¸ Áö¿øµË´Ï´Ù.
ÁÖ:
Áö¿øµÇ´Â È£½ºÆ® ¾ð¾î¿¡´Â ´ëºÎºÐÀÇ µ¥ÀÌÅͺ£À̽º °ü¸® ÇÁ·Î±×·¥ µ¥ÀÌÅÍ À¯Çü¿¡ ÀÏÄ¡ÇÏ´Â µ¥ÀÌÅÍ À¯ÇüÀÌ ÀÖ½À´Ï´Ù. È£½ºÆ® º¯¼ö ¼±¾ð¿¡¼ ÀÌ È£½ºÆ® ¾ð¾î µ¥ÀÌÅÍ À¯Çü¸¸ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. »çÀü ó¸® ÄÄÆÄÀÏ·¯±â È£½ºÆ® º¯¼ö ¼±¾ðÀ» ¹ß°ßÇÒ ¶§ ÀûÀýÇÑ SQL µ¥ÀÌÅÍ À¯Çü °ªÀ» °áÁ¤ÇÕ´Ï´Ù. µ¥ÀÌÅͺ£À̽º °ü¸® ÇÁ·Î±×·¥Àº ÀÌ °ªÀ» »ç¿ëÇÏ¿© ÀڽŰú ÀÀ¿ëÇÁ·Î±×·¥ »çÀÌ¿¡ ±³È¯µÇ´Â µ¥ÀÌÅ͸¦ º¯È¯ÇÕ´Ï´Ù.
ÀÀ¿ëÇÁ·Î±×·¥ ÇÁ·Î±×·¡¸Ó·Î¼ »ç¿ëÀÚ°¡ µ¥ÀÌÅͺ£À̽º °ü¸® ÇÁ·Î±×·¥ÀÌ ´Ù¸¥ µ¥ÀÌÅÍ À¯Çüµé »çÀÌ¿¡¼ ºñ±³ ¹× ÁöÁ¤À» ó¸®ÇÏ´Â ¹æ½ÄÀ» ÀÌÇØÇÏ´Â °ÍÀÌ Áß¿äÇÕ´Ï´Ù. °£´ÜÈ÷ ¸»Çؼ µ¥ÀÌÅÍ À¯ÇüÀº µ¥ÀÌÅͺ£À̽º °ü¸® ÇÁ·Î±×·¥ÀÌ µÎ °³ÀÇ SQL Ä÷³ µ¥ÀÌÅÍ À¯Çü, µÎ °³ÀÇ È£½ºÆ® ¾ð¾î µ¥ÀÌÅÍ À¯Çü ¶Ç´Â °¢ À¯Çü¿¡ ´ëÇØ ÀÛ¾÷ÇÏ´ÂÁö¿¡ °ü°è¾øÀÌ, ÁöÁ¤ ¹× ºñ±³ Á¶ÀÛÀ» ÇÏ´Â Áß¿¡ ¼·Î ȣȯµÇ¾î¾ß ÇÕ´Ï´Ù.
µ¥ÀÌÅÍ À¯Çü ȣȯ¼ºÀÇ ÀÏ¹Ý ±ÔÄ¢Àº Áö¿øµÇ´Â ¸ðµç È£½ºÆ® ¾ð¾î ¼öÄ¡ µ¥ÀÌÅÍ À¯ÇüÀº ¸ðµç µ¥ÀÌÅͺ£À̽º °ü¸® ÇÁ·Î±×·¥ ¼öÄ¡ µ¥ÀÌÅÍ À¯ÇüÀ¸·Î ºñ±³ ¹× ÁöÁ¤ °¡´ÉÇϸç, ¸ðµç È£½ºÆ® ¾ð¾î ¹®ÀÚ À¯ÇüÀº ¸ðµç µ¥ÀÌÅͺ£À̽º °ü¸® ÇÁ·Î±×·¥ ¹®ÀÚ À¯Çü°ú ȣȯµË´Ï´Ù. ¼öÄ¡ À¯ÇüÀº ¹®ÀÚ À¯Çü°ú ȣȯµÇÁö ¾Ê½À´Ï´Ù. ±×·¯³ª, ´ëÇü ¿ÀºêÁ§Æ®(LOB)¿¡ ´ëÇØ ÀÛ¾÷ÇÒ ¶§ ºÎ°úµÈ È£½ºÆ® ¾ð¾î Ư¡ ¹× Á¦ÇÑ»çÇ׿¡ µû¶ó ÀÌ·¯ÇÑ ÀÏ¹Ý ±ÔÄ¢¿¡ ´ëÇÑ ¿¹¿Üµµ ÀϺΠÀÖ½À´Ï´Ù.
SQL¹® ³»¿¡¼ DB2´Â ȣȯ°¡´ÉÇÑ µ¥ÀÌÅÍ À¯Çü »çÀÌÀÇ º¯È¯À» Á¦°øÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, ´ÙÀ½ SELECT¹®¿¡¼ SALARY ¹× BONUS´Â DECIMAL Ä÷³ÀÔ´Ï´Ù. ±×·¯³ª »ç¿øÀÇ Àüü º¸»óÀº DOUBLE µ¥ÀÌÅͷμ ¸®Åϵ˴ϴÙ.
SELECT EMPNO, DOUBLE(SALARY+BONUS) FROM EMPLOYEE
À§ ¸í·É¹®ÀÇ ½ÇÇà¿¡´Â DECIMAL ¹× DOUBLE µ¥ÀÌÅÍ À¯Çü »çÀÌÀÇ º¯È¯ÀÌ Æ÷ÇԵ˴ϴÙ. Á¶È¸ °á°ú¸¦ »ç¿ëÀÚ È¸é¿¡¼ º¸´Ù ½±°Ô ÀÐÀ» ¼ö ÀÖµµ·Ï Çϱâ À§ÇØ ´ÙÀ½ SELECT¹®À» »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
SELECT EMPNO, DIGIT(SALARY+BONUS) FROM EMPLOYEE
ÀÀ¿ëÇÁ·Î±×·¥ ³»¿¡¼ µ¥ÀÌÅ͸¦ º¯È¯ÇÏ·Á¸é Ãß°¡ ·çƾ, Ŭ·¡½º, ³»ÀåµÈ À¯Çü ¶Ç´Â ÀÌ º¯È¯À» Áö¿øÇÏ´Â API¿¡ ´ëÇÑ »ç¿ëÀÚ ÄÄÆÄÀÏ·¯ Á¦Á¶¾÷ü¿¡ ¹®ÀÇÇØ º¸½Ê½Ã¿À.
¹®ÀÚ µ¥ÀÌÅÍ À¯Çüµµ ¹®ÀÚ º¯È¯ÀÌ µÉ ¼ö ÀÖ½À´Ï´Ù. »ç¿ëÀÚ ÀÀ¿ëÇÁ·Î±×·¥ ÄÚµå ÆäÀÌÁö°¡ µ¥ÀÌÅͺ£À̽º ÄÚµå ÆäÀÌÁö¿Í °°Áö ¾ÊÀº °æ¿ì ´Ù¸¥ ÄÚµå ÆäÀÌÁö °£ÀÇ º¯È¯ÀÇ ³»¿ëÀ» ÂüÁ¶ÇϽʽÿÀ.
Áö¿ø SQL µ¥ÀÌÅÍ À¯Çü ¹× ÇØ´ç È£½ºÆ® ¾ð¾î µ¥ÀÌÅÍ À¯Çü ¸ñ·Ï¿¡ ´ëÇØ¼´Â ´ÙÀ½À» ÂüÁ¶ÇϽʽÿÀ.
SQL µ¥ÀÌÅÍ À¯Çü, ÁöÁ¤ ¹× ºñ±³ ±ÔÄ¢, µ¥ÀÌÅÍ º¯È¯ ¹× º¯È¯ ¿À·ù¿¡ ´ëÇÑ ¼¼ºÎ»çÇ×Àº SQL ÂüÁ¶¼ÀÇ ³»¿ëÀ» ÂüÁ¶ÇϽʽÿÀ.
´ÙÀ½ ÄÚµå ¼¼±×¸ÕÆ®´Â C ¿¹: STATIC.SQC¿¡ ³ª¿µÈ »ùÇà STATIC ÇÁ·Î±×·¥ÀÇ C ¹öÀü¿¡¼ ÇØ´ç ¼¼±×¸ÕÆ®¿¡ ´ëÇÑ ¼öÁ¤À» º¸¿©ÁÝ´Ï´Ù. ÀÌµé ¼¼±×¸ÕÆ®´Â ³Î(NULL) ÀÔ·Â °¡´ÉÇÑ µ¥ÀÌÅÍ Ä÷³¿¡¼ÀÇ Ç¥½Ã±â º¯¼ö ±¸ÇöÀ» ³ªÅ¸³À´Ï´Ù. ¿¹¿¡¼, STATIC ÇÁ·Î±×·¥ÀÌ ´Ù¸¥ Ä÷³, WORKDEPT¸¦ ¼±ÅÃÇϵµ·Ï È®ÀåµË´Ï´Ù. ÀÌ Ä÷³Àº ³Î(NULL) °ªÀ» °¡Áú ¼ö ÀÖ½À´Ï´Ù. Ç¥½Ã±â º¯¼ö´Â »ç¿ëµÇ±â Àü¿¡ È£½ºÆ® º¯¼ö·Î¼ ¼±¾ðµÇ¾î¾ß ÇÕ´Ï´Ù.
·
·
·
EXEC SQL BEGIN DECLARE SECTION; char wd[3]; short wd_ind; char firstname[13];
·
·
·
EXEC SQL END DECLARE SECTION;
·
·
·
/* CONNECT TO SAMPLE DATABASE */
·
·
·
EXEC SQL SELECT FIRSTNME, WORKDEPT INTO :firstname, :wd:wdind FROM EMPLOYEE WHERE LASTNAME = 'JOHNSON';
·
·
·