DB2 ÀÀ¿ëÇÁ·Î±×·¥Àº ¿©·¯ °³ÀÇ ºÎºÐµé·Î ±¸¼ºµÇ¾î ÀÖ½À´Ï´Ù.
Æ®·£Àè¼ÇÀ̶õ µ¥ÀÌÅͺ£À̽º¿¡ È®¾àÇϱâ Àü¿¡ ¼º°øÀûÀ¸·Î Á¾·áµÇ¾î¾ß ÇÏ´Â µ¥ÀÌÅͺ£À̽º Á¶ÀÛ ¼¼Æ®¸¦ ¸»ÇÕ´Ï´Ù. Embedded SQL°ú ÇÔ²² Æ®·£Àè¼ÇÀº ¾Ï½ÃÀûÀ¸·Î ½ÃÀ۵Ǹç, ÀÀ¿ëÇÁ·Î±×·¥ÀÌ COMMIT¹® ¶Ç´Â ROLLBACK¹®À» ½ÇÇàÇÒ ¶§ Á¾·áµË´Ï´Ù. Æ®·£Àè¼ÇÀÇ ¿¹·Î´Â °í°´ÀÇ ¿¹±Ý ÀÔ·Â ¹× ÀÜ°í °»½ÅÀ» µé ¼ö ÀÖ½À´Ï´Ù.
È£½ºÆ® ¾ð¾î·ÎºÎÅÍ embedded SQL¹®À¸·ÎÀÇ ÀüÀ̸¦ ó¸®ÇÏ·Á¸é ÀϺΠSQL¹®Àº ÇÁ·Î±×·¥ÀÇ ½ÃÀÛ ¹× ³¡¿¡ ³ªÅ¸³ª¾ß ÇÕ´Ï´Ù.
¸ðµç ÇÁ·Î±×·¥ ½ÃÀÛ ºÎºÐ¿¡´Â ´ÙÀ½ Ç׸ñµéÀÌ Æ÷ÇԵǾî¾ß ÇÕ´Ï´Ù.
Java·Î ÀÛ¼ºµÈ DB2 ÀÀ¿ëÇÁ·Î±×·¥Àº SQLExceptionÀ» µå·Î¿ìÇϸç, ÀÌ´Â SQLCA¸¦ »ç¿ëÇÏÁö ¾Ê°í catch ºí·Ï¿¡¼ ó¸®ÇÕ´Ï´Ù.
¸ðµç ÇÁ·Î±×·¥ÀÇ º»¹®¿¡´Â µ¥ÀÌÅ͸¦ ¾×¼¼½º ¹× °ü¸®ÇÏ´Â SQL¹®ÀÌ µé¾î ÀÖ½À´Ï´Ù. ÀÌµé ¸í·É¹®Àº Æ®·£Àè¼ÇÀ» ±¸¼ºÇÕ´Ï´Ù. Æ®·£Àè¼Ç¿¡´Â ´ÙÀ½ ¸í·É¹®ÀÌ µé¾î ÀÖ¾î¾ß ÇÕ´Ï´Ù.
ÀϹÝÀûÀ¸·Î ÀÀ¿ëÇÁ·Î±×·¥ÀÇ ³¡ ºÎºÐ¿¡´Â ´ÙÀ½°ú °°Àº SQL¹®ÀÌ Æ÷ÇԵ˴ϴÙ.
DB2 ÀÀ¿ëÇÁ·Î±×·¥À» ÄÚµåÈÇÏ·Á¸é ¿ì¼± ´ÙÀ½À» ¼±¾ðÇØ¾ß ÇÕ´Ï´Ù.
µ¥ÀÌÅͺ£À̽º °ü¸® ÇÁ·Î±×·¥°ú »óÈ£ÀÛ¿ëÇÏ´Â ¸ðµç º¯¼ö´Â SQL ¼±¾ð Àý¿¡¼ ¼±¾ðµÇ¾î¾ß ÇÕ´Ï´Ù. ´ÙÀ½°ú °°Àº ±¸Á¶·Î SQL ¼±¾ð ÀýÀ» ÄÚµåÈÇØ¾ß ÇÕ´Ï´Ù.
SQL declare ºÎºÐ¿¡ ¼±¾ðµÇ¾î Àִ ȣ½ºÆ® ÇÁ·Î±×·¥ º¯¼ö¸¦ È£½ºÆ® º¯¼ö¶ó°í ÇÕ´Ï´Ù. SQL¹®ÀÇ È£½ºÆ®-º¯¼ö ÂüÁ¶¿¡¼ È£½ºÆ® º¯¼ö¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. È£½ºÆ®-º¯¼ö´Â SQL ÂüÁ¶¼ÀÇ ±¸¹® µµÇ¥¿¡ »ç¿ëµÇ´Â ű×ÀÔ´Ï´Ù. ÇÑ ÇÁ·Î±×·¥¿¡ ¿©·¯ °³ÀÇ SQL declare ºÎºÐÀÌ Æ÷Ç﵃ ¼ö ÀÖ½À´Ï´Ù.
°¢ È£½ºÆ® º¯¼öÀÇ ¼Ó¼ºÀº SQL¹®¿¡¼ º¯¼ö°¡ »ç¿ëµÇ´Â ¹æ½Ä¿¡ µû¶ó ´Þ¶óÁý´Ï´Ù. ¿¹¸¦ µé¾î, DB2 Å×ÀÌºí¿¡ µ¥ÀÌÅ͸¦ ÀúÀåÇϰųª µ¥ÀÌÅ͸¦ ¹Þ´Â º¯¼öÀÇ µ¥ÀÌÅÍ À¯Çü ¹× ±æÀÌ´Â ¾×¼¼½º ÁßÀÎ Ä÷³°ú ȣȯµÇ´Â °Í°ú °°¾Æ¾ß ÇÕ´Ï´Ù. °¢ º¯¼öÀÇ µ¥ÀÌÅÍ À¯ÇüÀ» ¾Ë¾Æº¸·Á¸é DB2 µ¥ÀÌÅÍ À¯ÇüÀ» Àß ¾Ë°í ÀÖ¾î¾ß Çϴµ¥, ÀÌ¿¡ ´ëÇØ¼´Â µ¥ÀÌÅÍ À¯Çü¿¡ ¼³¸íµÇ¾î ÀÖ½À´Ï´Ù.
DB2 ¹öÀü 7ÀÇ °æ¿ì, Å×À̺í, º°¸í, ºä ¹× »ó°ü À̸§ÀÇ ÃÖ´ë ±æÀÌ´Â 128¹ÙÀÌÆ®ÀÔ´Ï´Ù. Ä÷³ À̸§ÀÇ ÃÖ´ë ±æÀÌ´Â 30¹ÙÀÌÆ®ÀÔ´Ï´Ù. DB2 ¹öÀü 7¿¡¼ ½ºÅ°¸¶ À̸§ÀÇ ÃÖ´ë ±æÀÌ´Â 30¹ÙÀÌÆ®ÀÔ´Ï´Ù. Â÷ÈÄ DB2 ¸±¸®½º¿¡¼´Â Ä÷³ À̸§ ¹× SQL ¿ÀºêÁ§Æ®ÀÇ ±âŸ ½Äº°ÀÚ À̸§À» ÃÖ°í 128¹ÙÀÌÆ®±îÁö Áõ°¡½Ãų ¼ö ÀÖ½À´Ï´Ù. 128¹ÙÀÌÆ®°¡ ¾ÈµÇ´Â SQL ¿ÀºêÁ§Æ®¸¦ ³ªÅ¸³»´Â º¯¼ö¸¦ ¼±¾ðÇÒ °æ¿ì Â÷ÈÄ SQL ¿ÀºêÁ§Æ® ½Äº° ±æÀ̰¡ Áõ°¡µÇ¸é ÀÀ¿ëÇÁ·Î±×·¥ÀÇ ¾ÈÁ¤¼º¿¡ ¿µÇâÀ» ÁÙ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, ½ºÅ°¸¶ À̸§À» º¸À¯Çϵµ·Ï char[9]schema_name º¯¼ö¸¦ C++ ÀÀ¿ëÇÁ·Î±×·¥¿¡¼ ¼±¾ðÇÒ°æ¿ì, ÃÖ´ë ±æÀ̰¡ 8¹ÙÀÌÆ®ÀÎ DB2 ¹öÀü 6¿¡ Çã¿ëµÇ´Â ½ºÅ°¸¶ À̸§¿¡ ´ëÇØ »ç¿ëÀÚ ÀÀ¿ëÇÁ·Î±×·¥ÀÌ Á¦´ë·Î ÀÛµ¿µË´Ï´Ù.
char[9] schema_name; /* holds null-delimited schema name of up to 8 bytes; works for DB2 Version 6, but may truncate schema names in future releases */
±×·¯³ª, ÃÖ´ë ±æÀ̰¡ 30¹ÙÀÌÆ®ÀÎ ½ºÅ°¸¶ À̸§À» Çã¿ëÇÏ´Â DB2 ¹öÀü 7·Î µ¥ÀÌÅͺ£À̽º¸¦ ÀÌÁÖ½Ãų °æ¿ì, ½ºÅ°¸¶ À̸§ LONGSCHEMA1°ú LONGSCHEMA2°¡ ±¸ºÐµÇÁö ¾Ê°ÔµË´Ï´Ù. µ¥ÀÌÅͺ£À̽º °ü¸® ÇÁ·Î±×·¥Àº ÀÌ ½ºÅ°¸¶ À̸§µéÀ» 8¹ÙÀÌÆ®·Î Á¦ÇÑÇÏ¿© LONGSCHE·Î µÇ¹Ç·Î, ½ºÅ°¸¶ À̸§À» ±¸º°ÇØ¾ß ÇÏ´Â ÀÀ¿ëÇÁ·Î±×·¥¿¡¼ÀÇ ¸í·É¹®Àº ½ÇÆÐÇÏ°Ô µË´Ï´Ù. ÀÀ¿ëÇÁ·Î±×·¥ÀÇ ±æÀ̸¦ Áõ°¡½ÃŰ·Á¸é ´ÙÀ½°ú °°ÀÌ 128¹ÙÀÌÆ® ±æÀ̸¦ °¡Áø ½ºÅ°¸¶ À̸§ º¯¼ö¸¦ ¼±¾ðÇϽʽÿÀ.
char[129] schema_name; /* holds null-delimited schema name of up to 128 bytes good for DB2 Version 7 and beyond */
Â÷ÈÄÀÇ ÀÀ¿ëÇÁ·Î±×·¥ Á¶ÀÛÀ» Çâ»ó½ÃŰ·Á¸é, ÀÀ¿ëÇÁ·Î±×·¥¿¡ ±æÀ̰¡ 128¹ÙÀÌÆ®ÀÎ SQL ¿ÀºêÁ§Æ® À̸§À» ³ªÅ¸³»´Â ¸ðµç º¯¼öµéÀ» ¼±¾ðÇØ º¸½Ê½Ã¿À. À̺¸´Ù ±ä º¯¼öÀÇ °æ¿ì ´õ ¸¹Àº ½Ã½ºÅÛ ÀÚ¿øÀÌ ÇÊ¿äÇÏ´Ù´Â °Í¿¡ ºñÇØ ȣȯ¼ºÀÌ Çâ»óµÈ´Ù´Â ÀÌÁ¡ÀÌ ÀÖ´Ù´Â °ÍÀ» °í·ÁÇØ¾ß ÇÕ´Ï´Ù.
ÀÌ·¯ÇÑ ÄÚµù Á¶ÀÛÀ» ½±°Ô Çϰí C/C++ ÀÀ¿ëÇÁ·Î±×·¥ Äڵ带 º¸´Ù ¸í·áÇÏ°Ô ÇÏ·Á¸é ÀÌ·¯ÇÑ SQL ¿ÀºêÁ§Æ® ½Äº°ÀÚ ±æÀ̸¦ ¼±¾ðÇÒ ¶§ C ¸ÅÅ©·ÎÈ®ÀåÀÚ¸¦ »ç¿ëÇØ º¸½Ê½Ã¿À. sql.h Æ÷ÇÔ ÆÄÀÏÀº SQL_MAX_IDENT¸¦ 128·Î ¼±¾ðÇϹǷÎ, SQL_MAX_IDENT ¸ÅÅ©·Î¸¦ ÀÌ¿ëÇÏ¿© SQL ¿ÀºêÁ§Æ® ½Äº°ÀÚ¸¦ ½±°Ô ¼±¾ðÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¸é ´ÙÀ½°ú °°½À´Ï´Ù.
#include <sql.h> char[SQL_MAX_IDENT+1] schema_name; char[SQL_MAX_IDENT+1] table_name; char[SQL_MAX_IDENT+1] employee_column; char[SQL_MAX_IDENT+1] manager_column;
C ¸ÅÅ©·Î È®Àå¿¡ ´ëÇÑ ¼¼ºÎ»çÇ×Àº C ¸ÅÅ©·Î ¿¹ÀÇ ³»¿ëÀ» ÂüÁ¶ÇϽʽÿÀ.
È£½ºÆ® º¯¼ö¸¦ »ç¿ëÇÏ¿© µ¥ÀÌÅͺ£À̽º °ü¸® ÇÁ·Î±×·¥À¸·ÎºÎÅÍ µ¥ÀÌÅ͸¦ ¹Þ°Å³ª, È£½ºÆ® ÇÁ·Î±×·¥À¸·ÎºÎÅÍ µ¥ÀÌÅͺ£À̽º °ü¸® ÇÁ·Î±×·¥À¸·Î µ¥ÀÌÅ͸¦ Àü¼ÛÇÒ ¼ö ÀÖ½À´Ï´Ù. µ¥ÀÌÅͺ£À̽º °ü¸® ÇÁ·Î±×·¥À¸·ÎºÎÅÍ µ¥ÀÌÅ͸¦ ¹Þ´Â È£½ºÆ® º¯¼ö¸¦ Ãâ·Â È£½ºÆ® º¯¼ö¶ó Çϰí, È£½ºÆ® ÇÁ·Î±×·¥À¸·ÎºÎÅÍ µ¥ÀÌÅͺ£À̽º °ü¸® ÇÁ·Î±×·¥À¸·Î µ¥ÀÌÅ͸¦ Àü¼ÛÇϴ ȣ½ºÆ® º¯¼ö¸¦ ÀԷ ȣ½ºÆ® º¯¼ö¶ó ÇÕ´Ï´Ù.
´ÙÀ½ SELECT INTO¹®À» º¸½Ê½Ã¿À.
SELECT HIREDATE, EDLEVEL INTO :hdate, :lvl FROM EMPLOYEE WHERE EMPNO = :idno
¿©±â¿¡´Â µÎ °³ÀÇ Ãâ·Â È£½ºÆ® º¯¼ö, hdate ¹× lvl°ú, ÇϳªÀÇ ÀԷ ȣ½ºÆ® º¯¼öÀÎ idno°¡ Æ÷ÇԵ˴ϴÙ. EMPLOYEE Å×À̺í·ÎºÎÅÍ °Ë»öµÇ´Â ÇàÀÇ EMPNO¸¦ °áÁ¤Çϱâ À§ÇØ µ¥ÀÌÅͺ£À̽º °ü¸® ÇÁ·Î±×·¥Àº idno È£½ºÆ® º¯¼ö¿¡ ÀúÀåµÈ µ¥ÀÌÅ͸¦ »ç¿ëÇÕ´Ï´Ù. µ¥ÀÌÅͺ£À̽º °ü¸® ÇÁ·Î±×·¥ÀÌ °Ë»ö ±âÁØ¿¡ ¸Â´Â ÇàÀ» ãÀ¸¸é hdate ¹× lvlÀº °¢°¢ HIREDATE ¹× EDLEVEL Ä÷³¿¡ ÀúÀåµÈ µ¥ÀÌÅ͸¦ ¹Þ½À´Ï´Ù. ÀÌ ¸í·É¹®Àº EMPLOYEE Å×À̺íÀÇ Ä÷³À» »ç¿ëÇÏ¿© È£½ºÆ® ÇÁ·Î±×·¥°ú µ¥ÀÌÅͺ£À̽º °ü¸® ÇÁ·Î±×·¥ »çÀÌÀÇ »óÈ£ÀÛ¿ëÀ» º¸¿©ÁÝ´Ï´Ù.
Å×À̺íÀÇ °¢ Ä÷³¿¡´Â CREATE TABLE Á¤ÀÇ¿¡ ÀÖ´Â µ¥ÀÌÅÍ À¯ÇüÀÌ ÁöÁ¤µË´Ï´Ù. ÀÌ ¹®¼¿¡¼ °¢ ¾ð¾îº° ÇØ´ç ÀåÀÇ Áö¿ø SQL µ¥ÀÌÅÍ À¯Çü ºÎºÐ¿¡ Á¤ÀÇµÈ È£½ºÆ® ¾ð¾î µ¥ÀÌÅÍ À¯Çü°ú ÀÌ µ¥ÀÌÅÍ À¯ÇüÀ» ¿¬°ü½ÃÄÑ¾ß ÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, INTEGER µ¥ÀÌÅÍ À¯ÇüÀº 32ºñÆ®ÀÇ ±âÈ£ÈµÈ Á¤¼öÀÔ´Ï´Ù. ÀÌ´Â °¢ È£½ºÆ® ¾ð¾î·Î µÈ ´ÙÀ½ µ¥ÀÌÅÍ ¼³¸í Ç׸ñ°ú °°½À´Ï´Ù.
Áö¿ø SQL µ¥ÀÌÅÍ À¯Çü ¹× ÇØ´ç È£½ºÆ® ¾ð¾î µ¥ÀÌÅÍ À¯Çü ¸ñ·Ï¿¡ ´ëÇØ¼´Â ´ÙÀ½À» ÂüÁ¶ÇϽʽÿÀ.
Ä÷³¿¡ »ç¿ëÇÒ È£½ºÆ® º¯¼öÀÇ Á¤ÀÇ ¹æ¹ýÀ» °áÁ¤ÇÏ·Á¸é ÇØ´ç Ä÷³ÀÇ SQL µ¥ÀÌÅÍ À¯ÇüÀ» ¾Ë¾Æ¾ß ÇÕ´Ï´Ù. µ¥ÀÌÅͺ£À̽º¿¡ ÀÛ¼ºµÈ ¸ðµç Å×ÀÌºí¿¡ ´ëÇÑ Á¤º¸°¡ µé¾î ÀÖ´Â ºä ¼¼Æ®ÀÎ ½Ã½ºÅÛ Ä«Å»·Î±×¸¦ Á¶È¸ÇØ º¸½Ê½Ã¿À. ÀÌ Ä«Å»·Î±×¿¡ ´ëÇØ¼´Â SQL ÂüÁ¶¼¿¡ ¼³¸íµÇ¾î ÀÖ½À´Ï´Ù.
µ¥ÀÌÅÍ À¯ÇüÀ» ¾Ë¾Æ³ÂÀ¸¸é È£½ºÆ® ¾ð¾î ÀåÀÇ º¯È¯Ç¥¸¦ ÂüÁ¶ÇÏ¿© ÇØ´ç ¼±¾ð¹®À» ÄÚµåÈÇÒ ¼ö ÀÖ½À´Ï´Ù. Declaration Generator À¯Æ¿¸®Æ¼(db2dclgn)¸¦ »ç¿ëÇÏ¿© µ¥ÀÌÅͺ£À̽º¿¡ Á¦°øµÈ Å×ÀÌºí¿¡ ´ëÇÑ ÇØ´ç ¼±¾ð¹®À» »ý¼ºÇÒ ¼öµµ ÀÖ½À´Ï´Ù. db2dclgn¿¡ ´ëÇÑ ¼¼ºÎ»çÇ×Àº ¼±¾ð »ý¼º±â - db2dclgn ¹× Command ReferenceÀÇ ³»¿ëÀ» ÂüÁ¶ÇϽʽÿÀ.
Ç¥ 4¿¡´Â Áö¿ø È£½ºÆ® ¾ð¾î¿¡ ÀÖ´Â ¼±¾ð¹® ¿¹°¡ ³ª¿Í ÀÖ½À´Ï´Ù. REXX ÀÀ¿ëÇÁ·Î±×·¥Àº LOB À§Ä¡ ÁöÁ¤ÀÚ ¹× ÆÄÀÏ ÂüÁ¶ º¯¼ö¸¦ Á¦¿ÜÇϰí, È£½ºÆ® º¯¼ö¸¦ ¼±¾ðÇÒ Çʿ䰡 ¾ø½À´Ï´Ù. º¯¼ö ¸ñÂ÷¸¦ ÅëÇØ ·±Å¸Àӽÿ¡ ±âŸ È£½ºÆ® º¯¼ö µ¥ÀÌÅÍ À¯Çü ¹× Å©±â¸¦ ¾Ë¾Æ³¾ ¼ö ÀÖ½À´Ï´Ù.
Ç¥ 4¿¡´Â BEGIN¹® ¹× END DECLARE SECTION¹®µµ ÀÖ½À´Ï´Ù. SQL¹®ÀÇ ºÐ¸®¹®ÀÚ°¡ ¾ð¾î¿¡ µû¶ó ¾î¶»°Ô ´Ù¸¥Áö º¸½Ê½Ã¿À. ÀÌ·¯ÇÑ ¸í·É¹®µéÀÇ Á¤È®ÇÑ À§Ä¡ ÁöÁ¤, Áö¼Ó ¹× ºÐ¸® ±ÔÄ¢¿¡ ´ëÇØ¼´Â ÀÌ Ã¥ÀÇ ¾ð¾îº° ÇØ´ç ÀåÀ» ÂüÁ¶ÇϽʽÿÀ.
SQL Åë½Å ¿µ¿ª(SQLCA)¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀº ÀÌ ÀåÀÇ µÞºÎºÐ¿¡¼ ´Ù·ê °ÍÀÔ´Ï´Ù. ÀÌ Àý¿¡¼´Â °£´ÜÇÑ °³¿ä¸¸ Á¦½ÃµË´Ï´Ù. SQLCA¸¦ ¼±¾ðÇÏ·Á¸é ÇÁ·Î±×·¥¿¡¼ INCLUDE SQLCA¹®À» ÄÚµåÈÇϽʽÿÀ.
C ¶Ç´Â C++ ÀÀ¿ëÇÁ·Î±×·¥¿ë:
EXEC SQL INCLUDE SQLCA;
Java ÀÀ¿ëÇÁ·Î±×·¥ÀÇ °æ¿ì: Java¿¡¼´Â SQLCA¸¦ ¸í½ÃÀûÀ¸·Î »ç¿ëÇÏÁö ¾Ê½À´Ï´Ù. ´ë½Å, SQLException ÀνºÅϽº ¸Þ¼Òµå¸¦ »ç¿ëÇÏ¿© SQLSTATE ¹× SQLCODE °ªÀ» ¾ò½À´Ï´Ù. Java¿¡ ÀÖ´Â SQLSTATE ¹× SQLCODE °ª¿¡¼ ÀÚ¼¼ÇÑ ³»¿ëÀ» ÂüÁ¶ÇϽʽÿÀ.
COBOL ÀÀ¿ëÇÁ·Î±×·¥¿ë:
EXEC SQL INCLUDE SQLCA END-EXEC.
FORTRAN ÀÀ¿ëÇÁ·Î±×·¥¿ë:
EXEC SQL INCLUDE SQLCA
ÇÁ·Î±×·¥À» »çÀü ó¸®ÇÒ ¶§ µ¥ÀÌÅͺ£À̽º °ü¸® ÇÁ·Î±×·¥Àº È£½ºÆ® ¾ð¾î º¯¼ö ¼±¾ð¹®À» INCLUDE SQLCA¹® À§Ä¡¿¡ »ðÀÔÇÕ´Ï´Ù. ½Ã½ºÅÛÀº °æ°í Ç÷¡±×, ¿À·ù ÄÚµå ¹× Áø´Ü Á¤º¸¿ë º¯¼ö¸¦ »ç¿ëÇÏ¿© »ç¿ëÀÚ ÇÁ·Î±×·¥°ú Åë½ÅÇÕ´Ï´Ù.
½Ã½ºÅÛÀº °¢ SQL¹®À» ½ÇÇàÇÑ ÈÄ SQLCODE ¹× SQLSTATE ¸ðµÎ¿¡¼ ¸®ÅÏ Äڵ带 ¸®ÅÏÇÕ´Ï´Ù. SQLCODE´Â ¸í·É¹® ½ÇÇàÀ» ¿ä¾àÇÏ´Â Á¤¼ö °ªÀ̰í, SQLSTATE´Â IBMÀÇ °ü°èÇü µ¥ÀÌÅͺ£À̽º Á¦Ç°À» ÅëÇØ ÀϹÝÀûÀÎ ¿À·ù Äڵ带 Á¦°øÇÏ´Â ¹®ÀÚ ÇʵåÀÔ´Ï´Ù. SQLSTATE´Â ISO/ANS SQL92 ¹× FIPS 127-2 Ç¥ÁØÀ» µû¸¨´Ï´Ù.
SQLCODE°¡ 0º¸´Ù ÀÛÀ» °æ¿ì ¿À·ù°¡ ¹ß»ýÇß°í ¸í·É¹®ÀÌ Ã³¸®µÇÁö ¾Ê¾ÒÀ½À» ³ªÅ¸³À´Ï´Ù. SQLCODE°¡ 0º¸´Ù Å« °æ¿ì °æ°í°¡ ³ªÅ¸³µÁö¸¸ ¿©ÀüÈ÷ ¸í·É¹®ÀÌ Ã³¸®µÇ¾úÀ½À» ³ªÅ¸³À´Ï´Ù. SQLCODE ¹× SQLSTATE¿¡ ´ëÇØ¼´Â ¸Þ½ÃÁö ÂüÁ¶¼ÀÇ ³»¿ëÀ» ÂüÁ¶ÇϽʽÿÀ.
°¢ SQL¹® ´ÙÀ½¿¡ ½Ã½ºÅÛÀÌ ¿À·ù Á¡°ËÀ» Á¦¾îÇϵµ·Ï ÇÏ·Á¸é WHENEVER¹®À» »ç¿ëÇϽʽÿÀ.
ÁÖ: | Java¿ë Embedded SQL(SQLJ) ÀÀ¿ëÇÁ·Î±×·¥¿¡¼´Â WHENEVER¹®À» »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù. Java¿¡ ÀÖ´Â SQLSTATE ¹× SQLCODE °ª¿¡ ¼³¸íµÇ¾î ÀÖ´Â SQLException ¸Þ¼Òµå¸¦ »ç¿ëÇÏ¿© SQL¹®¿¡ ÀÇÇØ ¸®ÅÏµÈ ¿À·ùµéÀ» ó¸®ÇϽʽÿÀ. |
´ÙÀ½ WHENEVER¹®Àº SQLCODE°¡ À½¼öÀÏ ¶§ ½Ã½ºÅÛ¿¡°Ô ½ÇÇà »óȲÀ» Ç¥½ÃÇÕ´Ï´Ù.
WHENEVER SQLERROR GO TO errchk
Áï, SQL ¿À·ù°¡ ¹ß»ýÇÒ ¶§¸¶´Ù ÇÁ·Î±×·¥ Á¦¾î´Â errchk¿Í °°Àº ·¹ÀÌºí µÚ¿¡ ¿À´Â ÄÚµå·Î À̵¿µË´Ï´Ù. ÀÌ Äڵ忡´Â SQLCA¿¡ ÀÖ´Â ¿À·ù Ç¥½Ã±â¸¦ ºÐ¼®Çϱâ À§ÇÑ ³í¸®°¡ Æ÷ÇԵǾî¾ß ÇÕ´Ï´Ù. ERRCHK Á¤ÀÇ¿¡ µû¶ó ´ÙÀ½ ÀýÂ÷ÀÇ ÇÁ·Î±×·¥ Áö½Ã¸¦ ½ÇÇàÇϰųª ÀϺΠƯ¼ö ±â´ÉÀ» ¼öÇàÇϸç, ´ëºÎºÐÀÇ °æ¿ì¿¡¼Ã³·³ ÇöÀç Æ®·£Àè¼ÇÀ» ±¸°£ º¹¿øÇϰí ÇÁ·Î±×·¥À» Á¾·áÇÏ´Â Á¶Ä¡°¡ ÃëÇØÁý´Ï´Ù. Æ®·£Àè¼Ç¿¡ ´ëÇÑ ¼¼ºÎ»çÇ×Àº Æ®·£Àè¼Ç ÄÚµùÀÇ ³»¿ëÀ», »ç¿ëÀÚÀÇ ÀÀ¿ëÇÁ·Î±×·¥¿¡¼ÀÇ ¿À·ù Á¡°Ë ¹æ¹ý¿¡ ´ëÇÑ ¼¼ºÎ»çÇ×Àº Áø´Ü Á¶Àý ¹× SQLCA ±¸Á¶ÀÇ ³»¿ëÀ» ÂüÁ¶ÇϽʽÿÀ.
WHENEVER SQLERROR¹®À» »ç¿ëÇÒ ¶§ÀÇ ½ÇÇà½Ã À¯ÀÇ»çÇ×. ÀÀ¿ëÇÁ·Î±×·¥ÀÇ ¿À·ù Á¶Àý Äڵ忡 SQL¹®¿¡ Æ÷ÇԵǾî ÀÖ°í, ÀÌ·¯ÇÑ ¸í·É¹®ÀÇ ½ÇÇà °á°ú ¿ø·¡ ¿À·ù¸¦ ó¸®ÇÏ´Â µ¿¾È ¿À·ù°¡ ¹ß»ýÇÒ °æ¿ì, ¹«ÇÑ ·çÇÁ·Î µÉ °¡´É¼ºÀÌ ÀÖ½À´Ï´Ù. ÀÌ·± °æ¿ì ¹®Á¦¸¦ ÇØ°áÇϱⰡ ¾î·Æ½À´Ï´Ù. WHENEVER SQLERROR ¸ñÀûÁöÀÇ ÃÖÃÊ ¸í·É¹®Àº WHENEVER SQLERROR CONTINUE¿©¾ß ÇÕ´Ï´Ù. ÀÌ ¸í·É¹®Àº ¿À·ù Çڵ鷯¸¦ Àç¼³Á¤ÇÕ´Ï´Ù. ÀÌ ¸í·É¹® ´ÙÀ½¿¡ SQL¹®À» ¾ÈÀüÇÏ°Ô »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
C++ ¶Ç´Â C·Î ÀÛ¼ºµÈ DB2 ÀÀ¿ëÇÁ·Î±×·¥ÀÇ °æ¿ì, ÀÀ¿ëÇÁ·Î±×·¥ÀÌ ¿©·¯ °³ÀÇ ¼Ò½º ÆÄÀÏ·Î ±¸¼ºµÇ¾î ÀÖÀ¸¸é SQLCAÀÇ ´ÙÁß Á¤ÀǸ¦ ÇÇÇÏ·Á¸é ÀÌ ÆÄÀÏ Áß Çϳª¿¡ EXEC SQL INCLUDE SQLCA¹®ÀÌ Æ÷ÇԵǾî¾ß ÇÕ´Ï´Ù. ³ª¸ÓÁö ¼Ò½º ÆÄÀÏÀº ´ÙÀ½ ÇàÀ» »ç¿ëÇØ¾ß ÇÕ´Ï´Ù.
#include "sqlca.h" extern struct sqlca sqlca;
ÀÀ¿ëÇÁ·Î±×·¥ÀÌ ISO/ANS SQL92 ¶Ç´Â FIPS 127-2 Ç¥ÁØÀ» µû¶ó¾ß ÇÏ´Â °æ¿ì, À§ ¸í·É¹®À̳ª INCLUDE SQLCA¹®À» »ç¿ëÇÏÁö ¸¶½Ê½Ã¿À. ISO/ANS SQL92 ¹× FIPS 127-2 Ç¥ÁØ¿¡ ´ëÇÑ ¼¼ºÎ»çÇ×Àº FIPS 127-2 ¹× ISO/ANS SQL92 Á¤ÀÇÀÇ ³»¿ëÀ» º¸½Ê½Ã¿À. À§ ¸í·É¹®À» ÄÚµåÈÇÏ´Â ´ë¾È¿¡ ´ëÇØ¼´Â ´ÙÀ½À» ÂüÁ¶ÇϽʽÿÀ.
ÀϹÝÀûÀ¸·Î ±âŸ ºñ½ÇÇà SQL¹®µµ ÀÌ ÇÁ·Î±×·¥ ÀýÀÇ ºÎºÐÀ̱⵵ ÇÕ´Ï´Ù. SQL ÂüÁ¶¼ ¹× ÀÌ ¾È³»¼ÀÇ ÈÄ¼Ó Àå ¸ðµÎ¿¡¼ ºñ½ÇÇà ¸í·É¹®¿¡ ´ëÇØ ³íÀÇÇÕ´Ï´Ù. ºñ½ÇÇà ¸í·É¹®ÀÇ ¿¹´Â ´ÙÀ½°ú °°½À´Ï´Ù.
»ç¿ëÀÚ ÇÁ·Î±×·¥Àº ½ÇÇà SQL¹®À» ¼öÇàÇϱâ Àü¿¡ ¸ñÇ¥ µ¥ÀÌÅͺ£À̽º ¼¹ö·ÎÀÇ ¿¬°áÀ» ¼³Á¤ÇØ¾ß ÇÕ´Ï´Ù. ÀÌ ¿¬°á·Î, ÇÁ·Î±×·¥À» ½ÇÇàÇÏ´Â »ç¿ëÀÚÀÇ ±ÇÇÑ ºÎ¿© ID¿Í ÇÁ·Î±×·¥ÀÌ ½ÇÇàµÇ´Â µ¥ÀÌÅͺ£À̽º ¼¹ö À̸§ ¸ðµÎ°¡ ½Äº°µË´Ï´Ù. ÀϹÝÀûÀ¸·Î »ç¿ëÀÚÀÇ ÀÀ¿ëÇÁ·Î±×·¥ ÇÁ·Î¼¼½º´Â ÇÑ ¹ø¿¡ ÇϳªÀÇ µ¥ÀÌÅͺ£À̽º ¼¹ö·Î¸¸ ¿¬°áÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ·¯ÇÑ ¼¹ö¸¦ ÇöÀç ¼¹ö¶ó°í ÇÕ´Ï´Ù. ±×·¯³ª, ÀÀ¿ëÇÁ·Î±×·¥Àº ´ÙÁß »çÀÌÆ® °»½Å ȯ°æ³»¿¡¼ ¿©·¯ °³ÀÇ µ¥ÀÌÅͺ£À̽º ¼¹ö·Î ¿¬°áÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ·± °æ¿ì ÇϳªÀÇ ¼¹ö¸¸ ÇöÀç ¼¹ö°¡ µÉ ¼ö ÀÖ½À´Ï´Ù. ´ÙÁß »çÀÌÆ® °»½Å¿¡ ´ëÇÑ ¼¼ºÎ»çÇ×Àº ´ÙÁß »çÀÌÆ® °»½ÅÀÇ ³»¿ëÀ» ÂüÁ¶ÇϽʽÿÀ.
»ç¿ëÀÚ ÇÁ·Î±×·¥Àº µ¥ÀÌÅͺ£À̽º ¼¹ö·ÎÀÇ ¿¬°áµµ ¼³Á¤ÇÒ ¼ö ÀÖ½À´Ï´Ù.
¿¬°á »óÅ¿¡ ´ëÇÑ ³íÀÇ ¹× CONNECT¹® »ç¿ë ¹æ¹ý¿¡ ´ëÇØ¼´Â SQL ÂüÁ¶¼ÀÇ ³»¿ëÀ» ÂüÁ¶ÇϽʽÿÀ. Ãʱ⼳Á¤½Ã ÀÀ¿ëÇÁ·Î±×·¥ ¸®Äù½ºÅÍ(AR)´Â ±âº» µ¥ÀÌÅͺ£À̽º ¼¹ö¸¦ ¼³Á¤ÇÕ´Ï´Ù. ³»ÀçµÈ ¿¬°áÀÌ ÀÛµ¿µÇ¾î ÀÖ´Â °æ¿ì, Ãʱ⼳Á¤ ÈÄ ½ÃÀÛµÈ ÀÀ¿ëÇÁ·Î±×·¥ ÇÁ·Î¼¼½º°¡ ±âº» µ¥ÀÌÅͺ£À̽º ¼¹ö·Î ³»ÀçÀûÀ¸·Î ¿¬°áÇÕ´Ï´Ù. ÀÀ¿ëÇÁ·Î±×·¥¿¡ ÀÇÇØ ½ÇÇàµÇ´Â ÃÖÃÊÀÇ SQL¹®À¸·Î CONNECT¹®À» »ç¿ëÇÏ´Â °ÍÀÌ ÁÁ½À´Ï´Ù. ÀÌ·¸°Ô ÇÏ¸é ±âº» µ¥ÀÌÅͺ£À̽º°¡ ¾Æ´Ñ SQL¹®À» ½ÇÇàÇÒ ¿ì·Á°¡ ¾ø¾îÁý´Ï´Ù.
¿¬°áÀÌ ¼³Á¤µÈ ÈÄ¿¡´Â ÇÁ·Î±×·¥ÀÌ ´ÙÀ½À» ½ÇÇàÇÏ´Â SQL¹®À» ¹ßÇàÇÒ ¼ö ÀÖ½À´Ï´Ù.
CONNECT RESET¹®, CONNECT TO¹® ¶Ç´Â DISCONNECT¹®ÀÌ ¹ßÇàµÉ ¶§±îÁö ¿¬°áÀÌ Áö¼ÓµË´Ï´Ù. ´ÙÁß »çÀÌÆ® °»½Å ȯ°æ¿¡¼, DB2 RELEASE¿Í DB2 COMMIT°¡ ¹ßÇàµÉ ¶§±îÁöµµ ¿¬°áÀÌ Áö¼ÓµË´Ï´Ù. CONNECT TO¹®Àº ´ÙÁß »çÀÌÆ® °»½ÅÀ» »ç¿ëÇÒ ¶§ ¿¬°áÀ» Á¾·áÇÏÁö ¾Ê½À´Ï´Ù(´ÙÁß »çÀÌÆ® °»½Å ÂüÁ¶).
Æ®·£Àè¼ÇÀ̶õ µ¥ÀÌÅͺ£À̽º °ü¸® ÇÁ·Î±×·¥ÀÌ Àüü·Î Ãë±ÞÇÏ´Â (ÁßÀç È£½ºÆ® ¾ð¾î Äڵ带 °¡Áø) ÀÏ·ÃÀÇ SQL¹®ÀÔ´Ï´Ù. Æ®·£Àè¼ÇÀ» ÈçÈ÷ ÀÛ¾÷ ´ÜÀ§(UOW)¶ó°íµµ ÇÕ´Ï´Ù.
Æ®·£Àè¼Ç ·¹º§¿¡¼ µ¥ÀÌÅÍÀÇ Àϰü¼ºÀ» À¯ÁöÇÏ·Á¸é Æ®·£Àè¼Ç ³»ÀÇ ¸ðµç Á¶ÀÛÀÌ ¿Ï·áµÇ°Å³ª ¾î¶² Á¶ÀÛµµ ¿Ï·áµÇÁö ¾Ê¾Æ¾ß ÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, ÇÁ·Î±×·¥ÀÌ ÇÑ °èÁ¿¡¼ µ·À» ÀÎÃâÇØ¼ ´Ù¸¥ °èÁ¿¡ Ãß°¡ÇÑ´Ù°í °¡Á¤ÇϽʽÿÀ. ´ÜÀÏ ÀÌ µÎ °»½ÅÀ» ¸ðµÎ ´ÜÀÏ Æ®·£Àè¼Ç¿¡ µÐ »óÅ¿¡¼ °»½ÅÀÌ ÁøÇàµÇ´Â µ¿¾È ½Ã½ºÅÛ Àå¾Ö°¡ ¹ß»ýÇÒ °æ¿ì, ½Ã½ºÅÛÀ» ´Ù½Ã ½ÃÀÛÇÒ ¶§ µ¥ÀÌÅͺ£À̽º °ü¸® ÇÁ·Î±×·¥Àº Æ®·£Àè¼ÇÀÌ ½ÃÀ۵DZâ Àü »óÅ·Πµ¥ÀÌÅ͸¦ ÀÚµ¿ º¹¿ø½Ãŵ´Ï´Ù. ÇÁ·Î±×·¥ ¿À·ù°¡ ¹ß»ýÇÏ¸é µ¥ÀÌÅͺ£À̽º °ü¸® ÇÁ·Î±×·¥Àº ¿À·ù°¡ ÀÖ´Â ¸í·É¹®¿¡ ÀÇÇØ º¯°æµÈ ¸ðµç º¯°æ»çÇ×À» º¹¿øÇÕ´Ï´Ù. µ¥ÀÌÅͺ£À̽º °ü¸® ÇÁ·Î±×·¥Àº Ưº°È÷ ±¸°£ º¹¿øÇÏÁö ¾Ê´Â ÇÑ ¿À·ù°¡ ÀÖ´Â ¸í·É¹®À» ½ÇÇàÇϱâ Àü¿¡ Æ®·£Àè¼Ç¿¡¼ ¼öÇàµÈ ÀÛ¾÷À» ½ÇÇà Ãë¼Ò½Ãŵ´Ï´Ù.
´ÜÀÏ ÀÀ¿ëÇÁ·Î±×·¥ ³»¿¡¼ Çϳª ÀÌ»óÀÇ Æ®·£Àè¼ÇÀ» ÄÚµåÈÇÒ ¼ö ÀÖÀ¸¸ç, ´ÜÀÏ Æ®·£Àè¼Ç ³»ºÎ·ÎºÎÅÍ Çϳª ÀÌ»óÀÇ µ¥ÀÌÅͺ£À̽º¿¡ ¾×¼¼½ºÇÏ´Â °ÍÀÌ °¡´ÉÇÕ´Ï´Ù. Çϳª ÀÌ»óÀÇ µ¥ÀÌÅͺ£À̽º¿¡ ¾×¼¼½ºÇÏ´Â Æ®·£Àè¼ÇÀ» ´ÙÁß »çÀÌÆ® °»½ÅÀ̶ó°í ÇÕ´Ï´Ù. ÀÌ·¯ÇÑ ÁÖÁ¦¿¡ ´ëÇØ¼´Â ¿ø°Ý ÀÛ¾÷ ´ÜÀ§(RUOW) ¹× ´ÙÁß »çÀÌÆ® °»½ÅÀÇ ³»¿ëÀ» ÂüÁ¶ÇϽʽÿÀ.
Æ®·£Àè¼ÇÀº ³»ÀçÀûÀ¸·Î ÃÖÃÊÀÇ executable SQL¹®À¸·Î ½ÃÀÛÇϰí, COMMIT¹® ¶Ç´Â ROLLBACK¹®À¸·Î, ¶Ç´Â ÇÁ·Î±×·¥ÀÌ Á¾·áµÉ¶§ Á¾·áµË´Ï´Ù.
´ëºñÀûÀ¸·Î ´ÙÀ½ ¿©¼¸ °³ ¹®ÀåÀº ½ÇÇà ¸í·É¹®ÀÌ ¾Æ´Ï¹Ç·Î Æ®·£Àè¼ÇÀ» ½ÃÀÛÇÏÁö ¾Ê½À´Ï´Ù.
BEGIN DECLARE SECTION INCLUDE SQLCA END DECLARE SECTION INCLUDE SQLDA DECLARE CURSOR WHENEVER
½ÇÇà SQL¹®Àº Ç×»ó Æ®·£Àè¼Ç ³»¿¡¼ ¹ß»ýÇÕ´Ï´Ù. ÇÁ·Î±×·¥¿¡ Æ®·£Àè¼Ç Á¾·á ÈÄ ½ÇÇà SQL¹®ÀÌ Æ÷ÇԵǾî ÀÖ´Â °æ¿ì ÀÚµ¿À¸·Î »õ·Î¿î Æ®·£Àè¼ÇÀ» ½ÃÀÛÇÕ´Ï´Ù.
Æ®·£Àè¼Ç Á¾·á ¹æ¹ýÀº ´ÙÀ½°ú °°ÀÌ µÎ °¡ÁöÀÔ´Ï´Ù.
ÀÌ ¸í·É¹®Àº ÇöÀç Æ®·£Àè¼ÇÀ» Á¾·áÇÕ´Ï´Ù. ÇöÀç Æ®·£Àè¼Ç µµÁßÀÇ µ¥ÀÌÅͺ£À̽º º¯°æ»çÇ×À» ´Ù¸¥ ÇÁ·Î¼¼½º°¡ º¼ ¼ö ÀÖµµ·Ï ÇÕ´Ï´Ù.
ÀÀ¿ëÇÁ·Î±×·¥ ¿©°ÇÀÌ Çã¿ëÇÏ´Â °¡´ÉÇÑ ÇÑ ½Å¼ÓÈ÷ º¯°æ»çÇ×À» È®¾àÇØ¾ß ÇÕ´Ï´Ù. ƯÈ÷, Å͹̳ηκÎÅÍÀÇ ÀÔ·ÂÀ» ´ë±âÇÏ´Â µ¿¾È È®¾àµÇÁö ¾ÊÀº º¯°æ»çÇ×ÀÌ º¸À¯µÇÁö ¾Êµµ·Ï ÇÁ·Î±×·¥À» ÀÛ¼ºÇϽʽÿÀ. ÀÌ·¸°Ô ÇÏ¸é µ¥ÀÌÅͺ£À̽º ÀÚ¿øÀ» ¿À·§µ¿¾È º¸À¯ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ·¸°Ô ÀÚ¿øÀ» º¸À¯ÇÔÀ¸·Î½á À̵é ÀÚ¿øÀ» ÇÊ¿ä·Î ÇÏ´Â ´Ù¸¥ ÀÀ¿ëÇÁ·Î±×·¥ÀÌ ¼öÇàµÇÁö ¸øÇϵµ·Ï ÇÕ´Ï´Ù.
COMMIT¹®Àº È£½ºÆ® º¯¼ö ³»¿ë¿¡´Â ¿µÇâÀ» ¹ÌÄ¡Áö ¾Ê½À´Ï´Ù.
»ç¿ëÀÚÀÇ ÀÀ¿ëÇÁ·Î±×·¥Àº Á¾·áÇϱâ Àü¿¡ ¸í½ÃÀûÀ¸·Î Æ®·£Àè¼ÇÀ» Á¾·á½ÃÄÑ¾ß ÇÕ´Ï´Ù. Æ®·£Àè¼ÇÀ» ¸í½ÃÀûÀ¸·Î Á¾·á½ÃŰÁö ¾ÊÀ¸¸é ÇÁ·Î±×·¥ÀÌ ¼º°øÀûÀ¸·Î Á¾·áµÉ ¶§ ÇÁ·Î±×·¥ÀÇ º¸·ù Æ®·£Àè¼Ç Áß¿¡ ÀÌ·ç¾îÁø ¸ðµç º¯°æ»çÇ×À» DB2ÀÌ ÀÚµ¿À¸·Î È®¾àÇÕ´Ï´Ù. ´Ü, Windows32ºñÆ® ¿î¿µ üÁ¦¿¡¼´Â ¿¹¿ÜÀÔ´Ï´Ù. DB2Àº ´ÙÀ½ Á¶°Ç ÇÏ¿¡¼ÀÇ º¯°æ»çÇ×Àº ±¸°£ º¹¿øÇÕ´Ï´Ù.
Windows 32ºñÆ® ¿î¿µ üÁ¦¿¡¼´Â Æ®·£Àè¼ÇÀ» ¸í½ÃÀûÀ¸·Î È®¾àÇÏÁö ¾ÊÀ¸¸é µ¥ÀÌÅͺ£À̽º °ü¸® ÇÁ·Î±×·¥Àº Ç×»ó Æ®·£Àè¼ÇÀ» ±¸°£ º¹¿øÇÕ´Ï´Ù.
ÇÁ·Î±×·¥ Á¾·á¿¡ ´ëÇÑ ¼¼ºÎ»çÇ×Àº ÇÁ·Î±×·¥ Á¾·á ¹× Áø´Ü Á¶Àý ¹× SQLCA ±¸Á¶ÀÇ ³»¿ëÀ» ÂüÁ¶ÇϽʽÿÀ.
ÀÌ ¸í·É¹®Àº ÇöÀç Æ®·£Àè¼ÇÀ» Á¾·áÇϰí, Æ®·£Àè¼ÇÀ» ½ÃÀÛÇϱâ Àü »óÅ·Πµ¥ÀÌÅ͸¦ º¹¿øÇÕ´Ï´Ù.
ROLLBACK¹®Àº È£½ºÆ® º¯¼ö ³»¿ë¿¡´Â ¿µÇâÀ» ¹ÌÄ¡Áö ¾Ê½À´Ï´Ù.
¿À·ù ¶Ç´Â °æ°í·Î ÀÎÇØ ÀÔ·ÂµÈ ·çƾ¿¡¼ ROLLBACK¹®À» »ç¿ëÇϰí SQL WHENEVER¹®À» »ç¿ëÇϸé, ROLLBACK ÀÌÀü¿¡ WHENEVER SQLERROR CONTINUE ¹× WHENEVER SQLWARNING CONTINUE¸¦ ÁöÁ¤ÇØ¾ß ÇÕ´Ï´Ù. ÀÌ·¸°Ô Çϸé ROLLBACKÀÌ ¿À·ù³ª °æ°í·Î ÀÎÇØ ½ÇÆÐÇÒ °æ¿ì ÇÁ·Î±×·¥ ·çÇÁ°¡ ¹ß»ýÇÏ´Â °ÍÀ» ¹æÁöÇÒ ¼ö ÀÖ½À´Ï´Ù.
½É°¢ÇÑ ¿À·ù°¡ ¹ß»ýÇϸé ROLLBACK¹®À» ½ÇÇàÇÒ ¼ö ¾ø´Ù´Â ¸Þ½ÃÁö°¡ ³ªÅ¸³³´Ï´Ù. Ŭ¶óÀÌ¾ðÆ®¿Í ¼¹ö ÀÀ¿ëÇÁ·Î±×·¥ »çÀÌÀÇ Åë½Å µÎÀý ¶Ç´Â µ¥ÀÌÅͺ£À̽ºÀÇ ¼Õ»ó°ú °°Àº ½É°¢ÇÑ ¿À·ù°¡ ¹ß»ýÇÒ °æ¿ì ROLLBACK¹®À» ½ÇÇàÇÏÁö ¸¶½Ê½Ã¿À. ½É°¢ÇÑ ¿À·ù°¡ ¹ß»ýÇÑ ÈÄ ½ÇÇàÇÒ ¼ö ÀÖ´Â À¯ÀÏÇÑ ¸í·É¹®Àº CONNECT¹®ÀÔ´Ï´Ù.
ÇÁ·Î±×·¥À» Á¦´ë·Î Á¾·áÇÏ·Á¸é,
ÁÖ: | ÇÁ·Î±×·¥ÀÌ Á¾·áµÉ ¶§ ÇöÀç Æ®·£Àè¼ÇÀÌ ¿©ÀüÈ÷ Ȱµ¿ÁßÀÎ °æ¿ì DB2´Â Æ®·£Àè¼ÇÀ» ³»ÀçÀûÀ¸·Î Á¾·áÇÕ´Ï´Ù. ³»ÀçÀûÀ¸·Î Æ®·£Àè¼ÇÀ» Á¾·áÇÒ ¶§ DB2 ÀÛµ¿ÀÌ Ç÷§Æûº°·Î ÀÌ·ç¾îÁú °æ¿ì, ÇÁ·Î±×·¥ÀÌ Á¾·áµÇ±â Àü¿¡ COMMIT¹® ¶Ç´Â ROLLBACK¹®À» ½ÇÇàÇÏ¿© ¸ðµç Æ®·£Àè¼ÇÀ» ¸í½ÃÀûÀ¸·Î Á¾·áÇØ¾ß ÇÕ´Ï´Ù. DB2°¡ ³»ÀçÀûÀ¸·Î Æ®·£Àè¼ÇÀ» Á¾·áÇÏ´Â ¹æ¹ý¿¡ ´ëÇÑ ¼¼ºÎ»çÇ×Àº "Æ®·£Àè¼Ç ³»ÀçÀû Á¾·á"ÀÇ ³»¿ëÀ» ÂüÁ¶ÇϽʽÿÀ. |
»ç¿ëÀÚ ÇÁ·Î±×·¥ÀÌ ÇöÀç Æ®·£Àè¼ÇÀ» ³¡³»Áö ¾Ê°í Á¾·áµÇ´Â °æ¿ì DB2´Â ³»ÀçÀûÀ¸·Î ÇöÀç Æ®·£Àè¼ÇÀ» Á¾·á½Ãŵ´Ï´Ù(ÇÁ·Î±×·¥ÀÇ ¿Ã¹Ù¸¥ Á¾·á ¹æ¹ý¿¡ ´ëÇØ¼´Â ÇÁ·Î±×·¥ Á¾·áÀÇ ³»¿ëÀ» ÂüÁ¶ÇϽʽÿÀ). DB2´Â ÀÀ¿ëÇÁ·Î±×·¥ÀÌ Á¾·áµÉ ¶§ COMMIT¹®À̳ª ROLLBACK¹®À» ½ÇÇàÇÏ¿© ÇöÀç Æ®·£Àè¼ÇÀ» Á¾·á½Ãŵ´Ï´Ù. DB2°¡ COMMIT¹® ¶Ç´Â ROLLBACK¹® Áß¿¡¼ ¾î´À °ÍÀ» ½ÇÇàÇÒ °ÍÀÎÁö´Â ´ÙÀ½°ú °°Àº Àμöµé¿¡ ÀÇÇØ °áÁ¤µË´Ï´Ù.
DB2´Â Á¾·á°¡ Á¤»óÀûÀ¸·Î ÀÌ·ç¾îÁú °æ¿ì Æ®·£Àè¼ÇÀ» ³»ÀçÀûÀ¸·Î È®¾àÇϰí, ºñÁ¤»óÀûÀ¸·Î ÀÌ·ç¾îÁú °æ¿ì Æ®·£Àè¼ÇÀ» ³»ÀçÀûÀ¸·Î ±¸°£ º¹¿øÇÕ´Ï´Ù. »ç¿ëÀÚ ÇÁ·Î±×·¥ÀÌ ºñÁ¤»ó Á¾·á¶ó°í ¿©±â´Â °ÍÀº µ¥ÀÌÅͺ£À̽º °ü¸® ÇÁ·Î±×·¥ÀÌ ºñÁ¤»ó Á¾·á¶ó°í °£ÁÖÇÏÁö ¾Ê½À´Ï´Ù. ¿¹¸¦ µé¾î, ÀÀ¿ëÇÁ·Î±×·¥¿¡ ¿¹±âÄ¡ ¸øÇÑ ¿À·ù°¡ ¹ß»ýÇÏ¿© ÀÀ¿ëÇÁ·Î±×·¥ÀÌ °©ÀÚ±â Á¾·áµÉ ¶§ exit(-16)¸¦ ÄÚµåÈÇÒ ¼ö ÀÖ½À´Ï´Ù. µ¥ÀÌÅͺ£À̽º °ü¸® ÇÁ·Î±×·¥Àº À̸¦ Á¤»ó Á¾·á¶ó°í °£ÁÖÇÏ°í Æ®·£Àè¼ÇÀ» È®¾àÇÕ´Ï´Ù. µ¥ÀÌÅͺ£À̽º °ü¸® ÇÁ·Î±×·¥Àº ºÐÇÒ À§¹Ý ¶Ç´Â ¿¹¿Ü¿Í °°Àº Ç׸ñµéÀ» ºñÁ¤»ó Á¾·á·Î ¿©±é´Ï´Ù.
DB2´Â »ç¿ëÀÚ°¡ ¸í½ÃÀûÀ¸·Î COMMIT¹®À» »ç¿ëÇÏ¿© Æ®·£Àè¼ÇÀ» ¸í½ÃÀûÀ¸·Î È®¾àÇÏÁö ¾Ê´Â ÇÑ, ÀÀ¿ëÇÁ·Î±×·¥ÀÌ Á¤»óÀûÀ¸·Î Á¾·áµÇ¾ú´ÂÁö¿¡ °ü°è¾øÀÌ Ç×»ó Æ®·£Àè¼ÇÀ» ±¸°£ º¹¿øÇÕ´Ï´Ù.
»ç¿ëÀÚ ÀÀ¿ëÇÁ·Î±×·¥Àº DB2 API¸¦ »ç¿ëÇÏ¿© ´ÙÁß ½º·¹µå µ¥ÀÌÅͺ£À̽º ¾×¼¼½º¿¡ ¼³¸íµÈ ´ë·Î ½º·¹µå »çÀÌ¿¡ ÀÀ¿ëÇÁ·Î±×·¥ ¹®¸ÆµéÀ» ¼³Á¤ ¹× Àü´ÞÇÒ ¼ö ÀÖ½À´Ï´Ù. »ç¿ëÀÚ ÀÀ¿ëÇÁ·Î±×·¥ÀÌ ÀÌ·¯ÇÑ DB2 API¸¦ »ç¿ëÇÒ °æ¿ì DB2´Â ÀÀ¿ëÇÁ·Î±×·¥ÀÌ Á¤»óÀûÀ¸·Î Á¾·áµÇ´ÂÁö¿¡ °ü°è¾øÀÌ Æ®·£Àè¼ÇÀ» ³»ÀçÀûÀ¸·Î ±¸°£ º¹¿øÇÕ´Ï´Ù. COMMIT¹®À» »ç¿ëÇÏ¿© Æ®·£Àè¼ÇÀ» ¸í½ÃÀûÀ¸·Î È®¾àÇÏÁö ¾Ê´Â ÇÑ DB2´Â Æ®·£Àè¼ÇÀ» ±¸°£ º¹¿øÇÕ´Ï´Ù.
ÇÁ·Î±×·¥ ÄÚµù¿ë ÀÇ»çÄÚµå ÇÁ·¹ÀÓ¿öÅ©¿¡¼´Â DB2 ÀÀ¿ëÇÁ·Î±×·¥¿ë ÀÏ¹Ý ÇÁ·¹ÀÓ¿öÅ©¸¦ ÀÇ»çÄÚµå Çü½ÄÀ¸·Î ¿ä¾à ¼³¸íÇÕ´Ï´Ù. ¹°·Ð »ç¿ëÀÚ ÇÁ·Î±×·¥¿¡ ¸Âµµ·Ï ÀÌ ÇÁ·¹ÀÓ¿öÅ©¸¦ Á¶Á¤ÇØ¾ß ÇÕ´Ï´Ù.
Start Program EXEC SQL BEGIN DECLARE SECTION | DECLARE USERID FIXED CHARACTER (8) | DECLARE PW FIXED CHARACTER (8) | | ÀÀ¿ëÇÁ·Î±×·¥ (other host variable declarations) | ¼³Á¤ | EXEC SQL END DECLARE SECTION | EXEC SQL INCLUDE SQLCA | EXEC SQL WHENEVER SQLERROR GOTO ERRCHK | (program logic) EXEC SQL CONNECT TO database A USER :userid USING :pw | EXEC SQL SELECT ... | EXEC SQL INSERT ... | ù¹øÂ° (more SQL statements) | UOW EXEC SQL COMMIT | (more program logic) EXEC SQL CONNECT TO database B USER :userid USING :pw | EXEC SQL SELECT ... | EXEC SQL DELETE ... | µÎ ¹øÂ° (more SQL statements) | UOW EXEC SQL COMMIT | (more program logic) EXEC SQL CONNECT TO database A | EXEC SQL SELECT ... | EXEC SQL DELETE ... | ¼¼ ¹øÂ° (more SQL statements) | UOW EXEC SQL COMMIT | (more program logic) EXEC SQL CONNECT RESET | ERRCHK | | ÀÀ¿ëÇÁ·Î±×·¥ (check error information in SQLCA) | ¼Ò°Å | End Program