È£½ºÆ® º¯¼ö´Â SQL¹®¿¡¼ ÂüÁ¶µÇ´Â C ¶Ç´Â C++ ¾ð¾î º¯¼öÀÔ´Ï´Ù. ÀÌ·± º¯¼ö¸¦ »ç¿ëÇÏ¿© ÀÀ¿ëÇÁ·Î±×·¥¿¡¼ ÀÔ·Â µ¥ÀÌÅ͸¦ Àü´ÞÇÏ°í µ¥ÀÌÅͺ£À̽º °ü¸® ÇÁ·Î±×·¥À¸·ÎºÎÅÍ Ãâ·Â µ¥ÀÌÅ͸¦ ¼ö½ÅÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÀ¿ëÇÁ·Î±×·¥À» »çÀü ó¸® ÄÄÆÄÀÏÇϸé ÄÄÆÄÀÏ·¯¿¡¼ ´Ù¸¥ C/C++ º¯¼ö¿Í ¸¶Âù°¡Áö·Î È£½ºÆ® º¯¼ö¸¦ »ç¿ëÇÕ´Ï´Ù. ´ÙÀ½ ±ÔÄ¢Àº È£½ºÆ® º¯¼ö¸¦ ¸í¸í, ¼±¾ð ±×¸®°í »ç¿ëÇÒ ¶§ ´ÙÀ½ Àý¿¡¼ ¼³¸íµË´Ï´Ù.
SQL »çÀü ó¸® ÄÄÆÄÀÏ·¯¿¡¼ ¼±¾ðµÈ À̸§À¸·Î È£½ºÆ® º¯¼ö¸¦ ½Äº°ÇÕ´Ï´Ù. ´ÙÀ½ ±ÔÄ¢ÀÌ Àû¿ëµË´Ï´Ù.
EXEC SQL BEGIN DECLARE SECTION; char varsql; /* allowed */ char sqlvar; /* not allowed */ char SQL_VAR; /* not allowed */ EXEC SQL END DECLARE SECTION;
void f1(int i) { EXEC SQL BEGIN DECLARE SECTION; short host_var_1; EXEC SQL END DECLARE SECTION; EXEC SQL SELECT COL1 INTO :host_var_1 from TBL1; } void f2(int i) { EXEC SQL BEGIN DECLARE SECTION; short host_var_2; EXEC SQL END DECLARE SECTION; EXEC SQL INSERT INTO TBL1 VALUES (:host_var_2); }
¶ÇÇÑ À¯Çü°ú Å©±â°¡ °°Àº ÇÑ ¸î °³ÀÇ Áö¿ª È£½ºÆ® º¯¼ö´Â °°Àº À̸§À» °¡Áú ¼ö ÀÖ½À´Ï´Ù. ±×·¸°Ô ÇÏ·Á¸é È£½ºÆ® º¯¼öÀÇ Ã¹¹øÂ° ¹ß»ýÀ» BEGIN DECLARE SECTION°ú END DECLARE SECTION ¹® »çÀÌ¿¡¼ »çÀü ó¸® ÄÄÆÄÀÏ·¯¿¡ ¼±¾ðÇϰí, ¼±¾ð Àý¿¡¼ º¯¼ö¿¡ ´ëÇÑ ÈÄ¼Ó ¼±¾ðÀ» ¼±¾ð Àý¿¡¼ Á¦°ÅÇϽʽÿÀ. ´ÙÀ½ Äڵ尡 ±× ¿¹¸¦ ³ªÅ¸³À´Ï´Ù.
void f3(int i) { EXEC SQL BEGIN DECLARE SECTION; char host_var_3[25]; EXEC SQL END DECLARE SECTION; EXEC SQL SELECT COL2 INTO :host_var_3 FROM TBL2; } void f4(int i) { char host_var_3[25]; EXEC SQL INSERT INTO TBL2 VALUES (:host_var_3); }
f3°ú f4°¡ °°Àº ¸ðµâ¿¡ ÀÖ°í µÎ ÇÔ¼ö¿¡¼ host_var_3ÀÇ À¯Çü°ú ±æÀ̰¡ °°À» °æ¿ì »çÀü ó¸® ÄÄÆÄÀÏ·¯¿¡ ´ëÇÑ ´ÜÀÏ ¼±¾ðÀº µÎ À§Ä¡¿¡¼ »ç¿ëÇϱ⿡ ÃæºÐÇÕ´Ï´Ù.
SQL ¼±¾ð ÀýÀº È£½ºÆ® º¯¼ö ¼±¾ðÀ» ½Äº°ÇÏ´Â µ¥ »ç¿ëÇØ¾ß ÇÕ´Ï´Ù. ÀÌ ÀýÀº ÈÄ¼Ó SQL¹®¿¡¼ ÂüÁ¶ÇÒ ¼ö Àִ ȣ½ºÆ® º¯¼ö¸¦ ÈÄ¼Ó »çÀü ó¸® ÄÄÆÄÀÏ·¯¿¡ ¾Ë·Á ÁÝ´Ï´Ù.
C/C++ »çÀü ó¸® ÄÄÆÄÀÏ·¯¿¡¼´Â À¯È¿ÇÑ C ¶Ç´Â C++ ¼±¾ðÀÇ ºÎ¼Ó ÁýÇÕÀ» À¯È¿ÇÑ È£½ºÆ® º¯¼ö ¼±¾ðÀ¸·Î¸¸ ÀνÄÇÕ´Ï´Ù. ÀÌ·± ¼±¾ð¿¡¼ ¼ýÀÚ³ª ¹®ÀÚ º¯¼ö¸¦ Á¤ÀÇÇÕ´Ï´Ù. È£½ºÆ® º¯¼öÀÇ Typedefs´Â Çã¿ëµÇÁö ¾Ê½À´Ï´Ù. È£½ºÆ® º¯¼ö´Â ´ÜÀÏ È£½ºÆ® ±¸Á¶·Î ±×·ìÈÇÒ ¼ö ÀÖ½À´Ï´Ù. È£½ºÆ® ±¸Á¶¿¡ ´ëÇØ¼´Â C ¹× C++ÀÇ È£½ºÆ® ±¸Á¶ Áö¿øÀÇ ³»¿ëÀ» ÂüÁ¶ÇϽʽÿÀ. C++ Ŭ·¡½º µ¥ÀÌÅÍ ±¸¼º¿øÀ» È£½ºÆ® º¯¼ö·Î Á¤ÀÇÇÒ ¼ö ÀÖ½À´Ï´Ù. Ŭ·¡½º¿¡ ´ëÇØ¼´Â C ¹× C++¿¡¼ Ŭ·¡½º µ¥ÀÌÅÍ ±¸¼º¿øÀ» È£½ºÆ® º¯¼ö·Î »ç¿ëÀÇ ³»¿ëÀ» ÂüÁ¶ÇϽʽÿÀ.
¼ýÀÚ È£½ºÆ® º¯¼ö´Â ¼ýÀÚ SQL ÀÔ·Â ¶Ç´Â Ãâ·Â °ªÀÇ ÀÔ·Â ¶Ç´Â Ãâ·Â º¯¼ö·Î »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ¹®ÀÚ È£½ºÆ® º¯¼ö´Â ¹®ÀÚ, ³¯Â¥, ½Ã°£ ¶Ç´Â ½Ã°£¼ÒÀÎ SQL ÀÔ·Â ¶Ç´Â Ãâ·Â °ªÀÇ ÀÔ·Â ¶Ç´Â Ãâ·Â º¯¼ö·Î »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÀ¿ëÇÁ·Î±×·¥¿¡¼ Ãâ·Â º¯¼ö°¡ ¼ö½ÅÇÑ °ªÀ» Æ÷ÇÔÇÒ¸¸Å ÃæºÐÈ÷ ±ä Áö È®ÀÎÇØ¾ß ÇÕ´Ï´Ù.
±¸Á¶È À¯Çü¿¡ ´ëÇØ È£½ºÆ® º¯¼ö¸¦ ¼±¾ðÇÏ´Â °Í¿¡ ´ëÇÑ Á¤º¸´Â ±¸Á¶È À¯Çü È£½ºÆ® º¯¼ö ¼±¾ðÀ» ÂüÁ¶ÇϽʽÿÀ.
C ¶Ç´Â C++¿¡¼ ¼ýÀÚ È£½ºÆ® º¯¼öÀÇ ±¸¹®¿¡¼ C ¶Ç´Â C++·Î ¼ýÀÚ È£½ºÆ® º¯¼ö¸¦ ¼±¾ðÇÏ´Â ±¸¹®À» ³ªÅ¸³À´Ï´Ù.
C ¶Ç´Â C++¿¡¼ ¼ýÀÚ È£½ºÆ® º¯¼öÀÇ ±¸¹® (1) >>-+----------+---+----------+---+-float-------------------+----> +-auto-----+ +-const----+ | (2) | +-extern---+ '-volatile-' +-double------------------+ +-static---+ | (3) | '-register-' +-short-------+-----+-----+ | '-int-' | +-+---------------------+-+ | +-sqlint32------------+ | | | (4) | | | '-long-------+-----+--' | | '-int-' | '-+---------------------+-' +-sqlint64------------+ +-__int64-------------+ +-long long--+-----+--+ | '-int-' | | (5) | '-long-------+-----+--' '-int-' .-,-----------------------------------------------------------. V | >--------+------------------------------+---varname--+-----------+--+> | .------------------------. | '-=--value--' | V | | '-----+-*-+---+----------+--+--' '-&-' +-const----+ '-volatile-' >----;---------------------------------------------------------><
ÁÖ:
¾ç½Ä 1: C/C++¿¡¼ °íÁ¤ ±æÀÌÀÇ ³Î·Î Á¾·áµÇ´Â ¹®ÀÚ È£½ºÆ® º¯¼öÀÇ ±¸¹®Àº C ¶Ç´Â C++¿¡¼ °íÁ¤ ±æÀÌÀÇ ³Î·Î Á¾·áµÇ´Â(null-terminated) ¹®ÀÚ È£½ºÆ® º¯¼ö¿¡ ´ëÇÑ ±¸¹®À» ³ªÅ¸³À´Ï´Ù.
¾ç½Ä 1: C/C++¿¡¼ °íÁ¤ ±æÀÌÀÇ ³Î·Î Á¾·áµÇ´Â ¹®ÀÚ È£½ºÆ® º¯¼öÀÇ ±¸¹® >>-+----------+---+----------+--+----------+--char--------------> +-auto-----+ +-const----+ '-unsigned-' +-extern---+ '-volatile-' +-static---+ '-register-' .-,-----------------------------------. V | >---------+-| CHAR |-----+---+-----------+--+--;--------------->< '-| C String |-' '-=--value--' CHAR (1) |--+------------------------------+---varname-------------------| | .------------------------. | | V | | '-----+-*-+---+----------+--+--' '-&-' +-const----+ '-volatile-' C String (2) |---+-varname-------------------------------------------+---[length]------| '-(--+------------------------------+---varname--)--' | .------------------------. | | V | | '-----+-*-+---+----------+--+--' '-&-' +-const----+ '-volatile-'
ÁÖ:
¾ç½Ä 2: C/C++¿¡¼ º¯¼ö ±æÀÌ ¹®ÀÚ È£½ºÆ® º¯¼öÀÇ ±¸¹®Àº C ¶Ç´Â C++¿¡¼ º¯¼ö ±æÀÌ ¹®ÀÚ È£½ºÆ® º¯¼ö¸¦ ¼±¾ðÇÏ´Â ±¸¹®À» ³ªÅ¸³À´Ï´Ù.
¾ç½Ä 2: C/C++¿¡¼ º¯¼ö ±æÀÌ ¹®ÀÚ È£½ºÆ® º¯¼öÀÇ ±¸¹® >>-+----------+---+----------+-- struct--+-----+---------> +-auto-----+ +-const----+ '-tag-' +-extern---+ '-volatile-' +-static---+ '-register-' (1) >----{--short--+-----+--var1--;--+----------+--char--var2--[length]--------;--}-> '-int-' '-unsigned-' .-,-------------------------------------------------------------------------------. V | >--------+------------------------------+---varname--+-------------------------------+--+> | .------------------------. | '-=--{--value-1--,--value-2--}--' | V | | '-----+-*-+---+----------+--+--' '-&-' +-const----+ '-volatile-' >----;---------------------------------------------------------><
ÁÖ:
º¯¼ö ±æÀÌ ¹®ÀÚ È£½ºÆ® º¯¼ö °í·Á»çÇ×:
Ç¥½Ã±â º¯¼ö´Â short µ¥ÀÌÅÍ À¯ÇüÀ¸·Î ¼±¾ðÇØ¾ß ÇÕ´Ï´Ù.
±×·¡ÇÈ È£½ºÆ® º¯¼ö ¼±¾ðÀº ´ÙÀ½ ¼¼ ¾ç½Ä Áß Çϳª¸¦ ÃëÇÒ ¼ö ÀÖ½À´Ï´Ù.
±×·¡ÇÈ È£½ºÆ® º¯¼ö »ç¿ë¿¡ ´ëÇØ¼´Â C ¹× C++¿¡¼ÀÇ ±×·¡ÇÈ È£½ºÆ® º¯¼ö 󸮿¡¼ ÀÚ¼¼ÇÑ ³»¿ëÀ» ÂüÁ¶ÇϽʽÿÀ.
±×·¡ÇÈ ¼±¾ð ±¸¹®(´ÜÀÏ ±×·¡ÇÈ ¾ç½Ä°ú ³Î·Î Á¾·áµÇ´Â ±×·¡ÇÈ ¾ç½Ä)Àº ´ÜÀÏ ±×·¡ÇÈ ¾ç½Ä°ú ³Î·Î Á¾·áµÇ´Â ±×·¡ÇÈ ¾ç½ÄÀ» »ç¿ëÇÏ¿© ±×·¡ÇÈ È£½ºÆ® º¯¼ö¸¦ ¼±¾ðÇÏ´Â ±¸¹®À» ³ªÅ¸³À´Ï´Ù.
±×·¡ÇÈ ¼±¾ð ±¸¹®(´ÜÀÏ ±×·¡ÇÈ ¾ç½Ä°ú ³Î·Î Á¾·áµÇ´Â ±×·¡ÇÈ ¾ç½Ä) (1) >>-+----------+---+----------+---+-----------+------------------> +-auto-----+ +-const----+ +-sqldbchar-+ +-extern---+ '-volatile-' '-wchar_t---' +-static---+ '-register-' .-,-----------------------------------. V | >---------+-| CHAR |-----+---+-----------+--+--;--------------->< '-| C String |-' '-=--value--' CHAR (2) |--+------------------------------+---varname-------------------| | .------------------------. | | V | | '-----+-*-+---+----------+--+--' '-&-' +-const----+ '-volatile-' C String (3) |---+-varname-------------------------------------------+---[length]------| '-(--+------------------------------+---varname--)--' | .------------------------. | | V | | '-----+-*-+---+----------+--+--' '-&-' +-const----+ '-volatile-'
ÁÖ:
±×·¡ÇÈ È£½ºÆ® º¯¼ö °í·Á»çÇ×:
±×·¡ÇÈ ¼±¾ðÀÇ ±¸¹®(VARGRAPHIC ±¸Á¶ ¾ç½Ä)Àº VARGRAPHIC ±¸Á¶ ¾ç½ÄÀ» »ç¿ëÇÏ¿© ±×·¡ÇÈ È£½ºÆ® º¯¼ö¸¦ ¼±¾ðÇÏ´Â ±¸¹®À» ³ªÅ¸³À´Ï´Ù.
±×·¡ÇÈ ¼±¾ðÀÇ ±¸¹®(VARGRAPHIC ±¸Á¶ ¾ç½Ä) >>-+----------+---+----------+-- struct--+-----+---------> +-auto-----+ +-const----+ '-tag-' +-extern---+ '-volatile-' +-static---+ '-register-' (1) (2) >----{--short--+-----+--var-1--;--+-----------+---var-2--[length-----]---;--}-> '-int-' +-sqldbchar-+ '-wchar_t---' .-,-----------------------------------------------------. V | >--------+------------------------------+---| Variable |--;---+->< | .------------------------. | | V | | '-----+-*-+---+----------+--+--' '-&-' +-const----+ '-volatile-' Variable |---variable-name----+-------------------------------+----------| '-=--{--value-1--,--value-2--}--'
ÁÖ:
±×·¡ÇÈ ¼±¾ð(VARGRAPHIC ±¸Á¶ ¾ç½Ä) °í·Á»çÇ×:
C/C++¿¡¼ ´ëÇü ¿ÀºêÁ§Æ®(LOB) È£½ºÆ® º¯¼öÀÇ ±¸¹®Àº C ¶Ç´Â C++¿¡¼ ´ëÇü ¿ÀºêÁ§Æ®(LOB) È£½ºÆ® º¯¼ö¸¦ ¼±¾ðÇÏ´Â ±¸¹®À» ³ªÅ¸³À´Ï´Ù.
C/C++¿¡¼ ´ëÇü ¿ÀºêÁ§Æ®(LOB) È£½ºÆ® º¯¼öÀÇ ±¸¹® >>-+----------+---+----------+--SQL TYPE IS----+-BLOB---+-------> +-auto-----+ +-const----+ +-CLOB---+ +-extern---+ '-volatile-' '-DBCLOB-' +-static---+ '-register-' (1) >-----(length-----)---------------------------------------------> .-,-------------------------------------------------------------------------------------. V | >--------+------------------------------+---variable-name--| LOB Data |-----------------------+> | .------------------------. | | V | | '-----+-*-+---+----------+--+--' '-&-' +-const----+ '-volatile-' >----;--------------------------------------------------------->< LOB Data |--+-------------------------------+----------------------------| +-={init-len,"init-data"}-------+ +-=SQL_BLOB_INIT("init-data")---+ +-=SQL_CLOB_INIT("init-data")---+ '-=SQL_DBCLOB_INIT("init-data")-'
ÁÖ:
LOB È£½ºÆ® º¯¼ö °í·Á»çÇ×:
SQL TYPE IS BLOB my_blob;
ÁÖ: | WCHARTYPE CONVERT »çÀü ó¸® ÄÄÆÄÀÏ ¿É¼ÇÀ» ¼±ÅÃÇÑ °æ¿ì »çÀü ó¸® ÄÄÆÄÀÏ ÇÁ·Î±×·¥¿¡¼ L"Hello"¿Í °°Àº ¿ÍÀÌµå ¹®ÀÚ ¸®ÅÍ·²¸¸ »ç¿ëÇØ¾ß ÇÕ´Ï´Ù. |
BLOB ¿¹:
¼±¾ð:
static Sql Type is Blob(2M) my_blob=SQL_BLOB_INIT("mydata");
±× °á°ú ´ÙÀ½ ±¸Á¶°¡ »ý¼ºµË´Ï´Ù.
static struct my_blob_t { sqluint32 length; char data[2097152]; } my_blob=SQL_BLOB_INIT("mydata");
CLOB ¿¹:
¼±¾ð:
volatile sql type is clob(125m) *var1, var2 = {10, "data5data5"};
±× °á°ú ´ÙÀ½ ±¸Á¶°¡ »ý¼ºµË´Ï´Ù.
volatile struct var1_t { sqluint32 length; char data[131072000]; } * var1, var2 = {10, "data5data5"};
DBCLOB ¿¹:
¼±¾ð:
SQL TYPE IS DBCLOB(30000) my_dbclob1;
WCHARTYPE NOCONVERT ¿É¼ÇÀ¸·Î »çÀü ó¸® ÄÄÆÄÀÏÇÏ¸é ´ÙÀ½ ±¸Á¶°¡ »ý¼ºµË´Ï´Ù.
struct my_dbclob1_t { sqluint32 length; sqldbchar data[30000]; } my_dbclob1;
¼±¾ð:
SQL TYPE IS DBCLOB(30000) my_dbclob2 = SQL_DBCLOB_INIT(L"mydbdata");
WCHARTYPE CONVERT ¿É¼ÇÀ¸·Î »çÀü ó¸® ÄÄÆÄÀÏÇÏ¸é ´ÙÀ½ ±¸Á¶°¡ »ý¼ºµË´Ï´Ù.
struct my_dbclob2_t { sqluint32 length; wchar_t data[30000]; } my_dbclob2 = SQL_DBCLOB_INIT(L"mydbdata");
C/C++¿¡¼ ´ëÇü ¿ÀºêÁ§Æ®(LOB) À§Ä¡ ÁöÁ¤ÀÚ È£½ºÆ® º¯¼öÀÇ ±¸¹®Àº C ¶Ç´Â C++¿¡¼ ´ëÇü ¿ÀºêÁ§Æ®(LOB) À§Ä¡ ÁöÁ¤ÀÚ È£½ºÆ® º¯¼ö¸¦ ¼±¾ðÇÏ´Â ±¸¹®À» ³ªÅ¸³À´Ï´Ù.
C/C++¿¡¼ ´ëÇü ¿ÀºêÁ§Æ®(LOB) À§Ä¡ ÁöÁ¤ÀÚ È£½ºÆ® º¯¼öÀÇ ±¸¹® >>-+----------+---+----------+--SQL TYPE IS---------------------> +-auto-----+ +-const----+ +-extern---+ '-volatile-' +-static---+ '-register-' .-,---------------. V | >-----+-BLOB_LOCATOR---+-------| Variable |--+--;-------------->< +-CLOB_LOCATOR---+ '-DBCLOB_LOCATOR-' Variable |-+-----------------------------------------------------------------+-| | .------------------------. | | V | | '-----+-*-+---+----------+--+--variable-name----+--------------+--' '-&-' +-const----+ '-= init-value-' '-volatile-'
LOB À§Ä¡ ÁöÁ¤ÀÚ È£½ºÆ® º¯¼ö °í·Á»çÇ×:
CLOB À§Ä¡ ÁöÁ¤ÀÚ ¿¹(´Ù¸¥ LOB À§Ä¡ ÁöÁ¤ÀÚ À¯Çü ¼±¾ðÀº ºñ½Á):
¼±¾ð:
SQL TYPE IS CLOB_LOCATOR my_locator;
±× °á°ú ´ÙÀ½ ¼±¾ðÀÌ »ý¼ºµË´Ï´Ù.
sqlint32 my_locator;
C/C++¿¡¼ ÆÄÀÏ ÂüÁ¶ È£½ºÆ® º¯¼öÀÇ ±¸¹®Àº C ¶Ç´Â C++¿¡¼ ÆÄÀÏ ÂüÁ¶ È£½ºÆ® º¯¼ö¸¦ ¼±¾ðÇÏ´Â ±¸¹®À» ³ªÅ¸³À´Ï´Ù.
C/C++¿¡¼ ÆÄÀÏ ÂüÁ¶ È£½ºÆ® º¯¼öÀÇ ±¸¹® >>-+----------+---+----------+--SQL TYPE IS----+-BLOB_FILE---+--> +-auto-----+ +-const----+ +-CLOB_FILE---+ +-extern---+ '-volatile-' '-DBCLOB_FILE-' +-static---+ '-register-' .-,---------------. V | >---------| Variable |--+--;----------------------------------->< Variable |-+-----------------------------------------------------------------+-| | .------------------------. | | V | | '-----+-*-+---+----------+--+--variable-name----+--------------+--' '-&-' +-const----+ '-= init-value-' '-volatile-'
ÁÖ:
CLOB ÆÄÀÏ ÂüÁ¶ ¿¹(´Ù¸¥ LOB ÆÄÀÏ ÂüÁ¶ ¼±¾ðÀº ºñ½Á):
¼±¾ð:
static volatile SQL TYPE IS BLOB_FILE my_file;
±× °á°ú ´ÙÀ½ ±¸Á¶°¡ »ý¼ºµË´Ï´Ù.
static volatile struct { sqluint32 name_length; sqluint32 data_length; sqluint32 file_options; char name[255]; } my_file;
C++ ¼±¾ð Àý¿¡¼´Â °ýÈ£¸¦ »ç¿ëÇÏ¿© È£½ºÆ® º¯¼ö¸¦ ÃʱâÈÇÒ ¼ö ¾ø½À´Ï´Ù. ´ÙÀ½ ¿¹´Â ¼±¾ð Àý¿¡¼ ¿Ã¹Ù¸£°Ô ÃʱâÈÇÏ´Â ¹æ¹ý°ú Ʋ¸®°Ô ÃʱâÈÇÏ´Â ¹æ¹ýÀ» ³ªÅ¸³À´Ï´Ù.
EXEC SQL BEGIN DECLARE SECTION; short my_short_2 = 5; /* correct */ short my_short_1(5); /* incorrect */ EXEC SQL END DECLARE SECTION;
C/C++ »çÀü ó¸® ÄÄÆÄÀÏ·¯´Â ¼±¾ð Àý¿¡¼ ¼±¾ð¿¡ »ç¿ëÇÑ C ¸ÅÅ©·Î¸¦ Á÷Á¢ ó¸®ÇÒ ¼ö ¾ø½À´Ï´Ù. ´ë½Å ¿ÜºÎ C ¼±Çà 󸮱â·Î ¼Ò½º ÆÄÀÏÀ» ¸ÕÀú ¼±Çà ó¸®ÇØ¾ß ÇÕ´Ï´Ù. ±×·¸°Ô ÇÏ·Á¸é PREPROCESSOR ¿É¼ÇÀ» ÅëÇØ »çÀü ó¸® ÄÄÆÄÀÏ·¯¿¡ C ¼±Çà 󸮱⸦ È£ÃâÇÏ´Â Á¤È®ÇÑ ¸í·ÉÀ» ÁöÁ¤ÇϽʽÿÀ.
PREPROCESSOR ¿É¼ÇÀ» ÁöÁ¤ÇÏ¸é »çÀü ó¸® ÄÄÆÄÀÏ·¯°¡ ¸ÕÀú SQL INCLUDE¹®¿¡¼ ÂüÁ¶ÇÑ ¸ðµç ÆÄÀÏÀÇ ³»¿ëÀ» ¼Ò½º ÆÄÀÏ·Î ÅëÇÕÇÏ¿© ¸ðµç SQL INCLUDE¹®À» ó¸®ÇÕ´Ï´Ù. ±×·± ´ÙÀ½ »çÀü ó¸® ÄÄÆÄÀÏ·¯¿¡¼ »ç¿ëÀÚ°¡ ¼öÁ¤ÇÑ ¼Ò½º ÆÄÀÏÀ» ÅëÇØ ÀÔ·ÂÀ¸·Î ÁöÁ¤ÇÑ ¸í·ÉÀ» »ç¿ëÇÏ¿© ¿ÜºÎ C ¼±Çà 󸮱⸦ È£ÃâÇÕ´Ï´Ù. ¼±Çà ó¸® ÆÄÀÏ(»çÀü ó¸® ÄÄÆÄÀÏ·¯¿¡¼ È®ÀåÀÚ¸¦ Ç×»ó ".i"·Î ¿¹»ó)Àº »çÀü ó¸® ÄÄÆÄÀÏ ÇÁ·Î¼¼½ºÀÇ ³ª¸ÓÁö¿¡ ´ëÇØ »õ·Î¿î ¼Ò½º ÆÄÀÏ·Î »ç¿ëµË´Ï´Ù.
»çÀü ó¸® ÄÄÆÄÀÏ·¯¿¡¼ »ý¼ºÇÑ #line ¸ÅÅ©·Î´Â ´õ ÀÌ»ó ¿ø·¡ÀÇ ¼Ò½º ÆÄÀÏÀ» ÂüÁ¶ÇÏÁö ¾Ê´Â ´ë½Å ¼±Çà ó¸® ÆÄÀÏÀ» ÂüÁ¶ÇÕ´Ï´Ù. ÄÄÆÄÀÏ·¯ ¿À·ù¸¦ ¿ø·¡ÀÇ ¼Ò½º ÆÄÀϰú ´Ù½Ã °ü·Ã½ÃŰ·Á¸é ¼±Çà ó¸® ÆÄÀÏ¿¡ ÁÖ¼®À» Æ÷ÇÔÇϽʽÿÀ. ±×·¸°Ô Çϸé Çì´õ ÆÄÀÏÀ» Æ÷ÇÔÇÏ¿© ¿ø·¡ ¼Ò½º ÆÄÀÏÀÇ ´Ù¾çÇÑ ÀýÀ» ½±°Ô ãÀ» ¼ö ÀÖ½À´Ï´Ù. ÁÖ¼®À» Æ÷ÇÔÇÑ ¿É¼ÇÀº C ¼±Çà 󸮱⿡¼ °øÅëÀûÀ¸·Î »ç¿ëÇÒ ¼ö ÀÖÀ¸¸ç PREPROCESSOR ¿É¼ÇÀ» ÅëÇØ ÁöÁ¤ÇÑ ¸í·É¿¡ ÀÌ ¿É¼ÇÀ» Æ÷ÇÔÇÒ ¼ö ÀÖ½À´Ï´Ù. »çÀü ó¸® ÄÄÆÄÀÏ·¯¿¡¼ »ý¼ºÇÑ °Í°ú Ʋ¸®°Ô È¥ÇÕµÉ ¼ö ÀÖÀ¸¹Ç·Î C ¼±Çà 󸮱â·Î #line ¸ÅÅ©·Î ÀÚü¸¦ Ãâ·ÂÇØ¼± ¾ÈµË´Ï´Ù.
¸ÅÅ©·Î È®Àå »ç¿ë¿¡ ´ëÇÑ ÁÖ:
xlC -P -DMYMACRO=1
xlC -E > x.i
¿¹¸¦ µé¾î, ´ÙÀ½°ú °°ÀÌ ¼Ò½º Äڵ忡¼ ¸ÅÅ©·Î È®ÀåÀ» »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
#define SIZE 3 EXEC SQL BEGIN DECLARE SECTION; char a[SIZE+1]; char b[(SIZE+1)*3]; struct { short length; char data[SIZE*6]; } m; SQL TYPE IS BLOB(SIZE+1) x; SQL TYPE IS CLOB((SIZE+2)*3) y; SQL TYPE IS DBCLOB(SIZE*2K) z; EXEC SQL END DECLARE SECTION;
PREPROCESSOR ¿É¼Ç »ç¿ë ÈÄ À§ ¼±¾ðÀº ´ÙÀ½À¸·Î ºÐ¼®µË´Ï´Ù.
EXEC SQL BEGIN DECLARE SECTION; char a[4]; char b[12]; struct { short length; char data[18]; } m; SQL TYPE IS BLOB(4) x; SQL TYPE IS CLOB(15) y; SQL TYPE IS DBCLOB(6144) z; EXEC SQL END DECLARE SECTION;
È£½ºÆ® ±¸Á¶ Áö¿øÀ» ÅëÇØ C/C++ »çÀü ó¸® ÄÄÆÄÀÏ·¯¿¡¼ È£½ºÆ® º¯¼ö¸¦ ´ÜÀÏ È£½ºÆ® ±¸Á¶·Î ±×·ìÈÇÒ ¼ö ÀÖ½À´Ï´Ù. µû¶ó¼ SQL¹®ÀÇ µ¿ÀÏ È£½ºÆ® º¯¼ö ÁýÇÕÀ» ºü¸£°Ô ÂüÁ¶ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, ´ÙÀ½ È£½ºÆ® ±¸Á¶¸¦ »ç¿ëÇÏ¿© SAMPLE µ¥ÀÌÅͺ£À̽ºÀÇ STAFF Å×ÀÌºí¿¡ ÀÖ´Â ÀϺΠÄ÷³¿¡ ¾×¼¼½ºÇÒ ¼ö ÀÖ½À´Ï´Ù.
struct tag { short id; struct { short length; char data[10]; } name; struct { short years; double salary; } info; } staff_record;
È£½ºÆ® ±¸Á¶ÀÇ Çʵå´Â À¯È¿ÇÑ ÀÓÀÇÀÇ È£½ºÆ® º¯¼ö À¯ÇüÀÌ µÉ ¼ö ÀÖ½À´Ï´Ù. ¿©±â¿¡´Â ¸ðµç ¼ýÀÚ, ¹®ÀÚ ¹× ´ëÇü ¿ÀºêÁ§Æ®(LOB) À¯ÇüÀÌ Æ÷ÇԵ˴ϴÙ. ÁßøµÈ È£½ºÆ® ±¸Á¶µµ 25 ·¹º§±îÁö Áö¿øµË´Ï´Ù. À§ÀÇ ¿¹¿¡¼ info Çʵå´Â ÇÏÀ§ ±¸Á¶ÀÌÁö¸¸ name Çʵå´Â VARCHAR Çʵ带 Ç¥½ÃÇϹǷΠÇÏÀ§ ±¸Á¶°¡ ¾Æ´Õ´Ï´Ù. °°Àº ¿øÄ¢ÀÌ LONG VARCHAR, VARGRAPHIC ¹× LONG VARGRAPHIC¿¡ Àû¿ëµË´Ï´Ù. È£½ºÆ® ±¸Á¶ÀÇ Æ÷ÀÎÅ͵µ Áö¿øµË´Ï´Ù.
SQL¹®ÀÇ È£½ºÆ® ±¸Á¶¿¡¼ ±×·ìÈµÈ È£½ºÆ® º¯¼ö¸¦ ÂüÁ¶ÇÏ´Â ¹æ¹ý¿¡´Â µÎ °¡Áö°¡ ÀÖ½À´Ï´Ù.
EXEC SQL SELECT id, name, years, salary INTO :staff_record FROM staff WHERE id = 10;
»çÀü ó¸® ÄÄÆÄÀÏ·¯¿¡¼ staff_record¿¡ ´ëÇÑ ÂüÁ¶¸¦ È£½ºÆ® ±¸Á¶¿¡¼ ¼±¾ðµÈ ¸ðµç ÇʵåÀÇ ¸ñ·ÏÀ¸·Î º¯È¯ÇÕ´Ï´Ù. À̶§ ¸ñ·ÏÀº ½°Ç¥·Î ºÐ¸®µË´Ï´Ù. °¢ Çʵå´Â ¸ðµç ·¹º§ÀÇ È£½ºÆ® ±¸Á¶ À̸§À¸·Î ±ÔÁ¤µÇ¹Ç·Î ´Ù¸¥ È£½ºÆ® º¯¼ö³ª Çʵå¿ÍÀÇ ¸í¸í Ãæµ¹À» ¹æÁöÇÕ´Ï´Ù. ÀÌ´Â ´ÙÀ½ ¹æ¹ý°ú ÀÏÄ¡ÇÕ´Ï´Ù.
EXEC SQL SELECT id, name, years, salary INTO :staff_record.id, :staff_record.name, :staff_record.info.years, :staff_record.info.salary FROM staff WHERE id = 10;
°°Àº À̸§À» °¡Áø ´Ù¸¥ È£½ºÆ® º¯¼ö°¡ ¾ø´Â °æ¿ì¿¡µµ Çʵå À̸§¿¡ ´ëÇÑ ÂüÁ¶´Â ¿ÏÀüÇØ¾ß ÇÕ´Ï´Ù. ±ÔÁ¤µÈ ÇÏÀ§ ±¸Á¶µµ ÂüÁ¶ÇÒ ¼ö ÀÖ½À´Ï´Ù. À§ÀÇ ¿¹¿¡¼ :staff_record.info¸¦ »ç¿ëÇÏ¿© :staff_record.info.years, :staff_record.info.salary¸¦ ´ëüÇÒ ¼ö ÀÖ½À´Ï´Ù.
ù¹øÂ° ¿¹ÀÇ È£½ºÆ® ±¸Á¶¿¡ ´ëÇÑ ÂüÁ¶°¡ ½°Ç¥·Î ºÐ¸®µÇ´Â ÇʵåÀÇ ¸ñ·Ï¿¡ ÇØ´çÇϹǷΠÀÌ·± À¯ÇüÀÇ ÂüÁ¶°¡ ¿À·ù¸¦ ÀÏÀ¸Å³ ¼ö ÀÖ´Â ÀνºÅϽº°¡ ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, ´ÙÀ½°ú °°½À´Ï´Ù.
EXEC SQL DELETE FROM :staff_record;
¿©±â¼ DELETE¹®Àº ´ÜÀÏ ¹®ÀÚ ±â¹Ý È£½ºÆ® º¯¼ö¸¦ ±â´ëÇÕ´Ï´Ù. È£½ºÆ® ±¸Á¶¸¦ Á¦°øÇÏ¸é ¸í·É¹®¿¡¼ »çÀü ó¸® ÄÄÆÄÀÏ ½Ã°£ ¿À·ù°¡ ¹ß»ýÇÕ´Ï´Ù.
SQL0087N "staff_record" È£½ºÆ® º¯¼ö´Â ±¸Á¶ ÂüÁ¶°¡ Çã¿ëµÇÁö ¾ÊÀ» ¶§ »ç¿ëµÇ´Â ±¸Á¶ÀÔ´Ï´Ù.
PREPARE, EXECUTE IMMEDIATE, CALL, Ç¥½Ã±â º¯¼ö ¹× SQLDA ÂüÁ¶ µî ´Ù¸¥ È£½ºÆ® ±¸Á¶¸¦ »ç¿ëÇϸé SQL0087N ¿À·ù°¡ ¹ß»ýÇÒ ¼ö ÀÖ½À´Ï´Ù. µÎ ¹øÂ° ¿¹¿¡¼ °³º° Çʵ带 Á¤È®È÷ ÂüÁ¶ÇÒ ¶§¿Í °°Àº »óȲ¿¡¼´Â ÇÑ Çʵ常À» Æ÷ÇÔÇÑ È£½ºÆ® ±¸Á¶°¡ Çã¿ëµË´Ï´Ù.
Ç¥½Ã±â Å×À̺íÀº È£½ºÆ® ±¸Á¶¿¡ »ç¿ëÇÒ Ç¥½Ã±â º¯¼öÀÇ ÄÝ·º¼ÇÀÔ´Ï´Ù. ÀÌ º¯¼ö ÁýÇÕÀº ªÀº Á¤¼ö ¹è¿·Î ¼±¾ðÇØ¾ß ÇÕ´Ï´Ù. ¿¹¸¦ µé¸é ´ÙÀ½°ú °°½À´Ï´Ù.
short ind_tab[10];
À§ÀÇ ¿¹´Â 10°³ÀÇ ±¸¼º¿ä¼Ò°¡ Àִ ǥ½Ã±â Å×À̺íÀ» ¼±¾ðÇÕ´Ï´Ù. ´ÙÀ½Àº SQL¹®¿¡¼ ÀÌ Å×À̺íÀ» »ç¿ëÇÒ ¼ö ÀÖ´Â ¹æ¹ýÀ» ³ªÅ¸³À´Ï´Ù.
EXEC SQL SELECT id, name, years, salary INTO :staff_record INDICATOR :ind_tab FROM staff WHERE id = 10;
´ÙÀ½¿¡¼´Â Å×À̺íÀÇ ÇØ´ç Ç¥½Ã±â º¯¼ö¸¦ Æ÷ÇÔÇÑ °¢ È£½ºÆ® ±¸Á¶ Çʵ带 ³ª¿ÇÕ´Ï´Ù.
ÁÖ: | SQL¹®¿¡¼ ind_tab[1]°ú °°Àº Ç¥½Ã±â Å×ÀÌºí ±¸¼º¿ä¼Ò¸¦ °³º°ÀûÀ¸·Î ÂüÁ¶ÇÒ ¼ö ¾ø½À´Ï´Ù. INDICATOR Ű¿öµå´Â ¼±ÅÃÀûÀÔ´Ï´Ù. ±¸Á¶ Çʵå¿Í Ç¥½Ã±âÀÇ ¼ö°¡ ÀÏÄ¡ÇÒ ÇÊ¿ä´Â ¾ø½À´Ï´Ù. Ãß°¡ Ç¥½Ã±â´Â »ç¿ëµÇÁö ¾ÊÀ¸¸ç Ãß°¡ Çʵ忡¼ Ç¥½Ã±â¸¦ ÇÒ´çÇÏÁö ¾Ê½À´Ï´Ù. |
Ç¥½Ã±â º¯¼ö Å×ÀÌºí ´ë½Å ½ºÄ®¶ó Ç¥½Ã±â º¯¼ö¸¦ »ç¿ëÇÏ¿© È£½ºÆ® ±¸Á¶ÀÇ Ã¹¹øÂ° Çʵ忡 ´ëÇÑ Ç¥½Ã±â¸¦ Á¦°øÇÒ ¼öµµ ÀÖ½À´Ï´Ù. ÀÌ´Â ±¸¼º¿ä¼Ò°¡ Çϳª¸¸ Àִ ǥ½Ã±â Å×À̺íÀ» Æ÷ÇÔÇÏ´Â °Í°ú °°½À´Ï´Ù. ¿¹¸¦ µé¸é ´ÙÀ½°ú °°½À´Ï´Ù.
short scalar_ind; EXEC SQL SELECT id, name, years, salary INTO :staff_record INDICATOR :scalar_ind FROM staff WHERE id = 10;
È£½ºÆ® ±¸Á¶ ´ë½Å È£½ºÆ® º¯¼ö¿Í ÇÔ²² Ç¥½Ã±â Å×À̺íÀ» ÁöÁ¤ÇÒ °æ¿ì ind_tab[0]°ú °°Àº Ç¥½Ã±â Å×À̺íÀÇ Ã¹¹øÂ° ±¸¼º¿ä¼Ò¸¸ »ç¿ëµÇÁö ¾Ê½À´Ï´Ù.
EXEC SQL SELECT id INTO :staff_record.id INDICATOR :ind_tab FROM staff WHERE id = 10;
È£½ºÆ® ±¸Á¶¿¡¼ ªÀº Á¤¼ö ¹è¿À» ¼±¾ðÇÒ °æ¿ì
struct tag { short i[2]; } test_record;
:test_record¸¦ :test_record.i[0], :test_record.i[1]°ú µ¿ÀÏÇÏ°Ô ¼³Á¤ÇÏ¸é¼ SQL¹®¿¡¼ test_record¸¦ ÂüÁ¶ÇÏ¸é ¹è¿ÀÌ ±× ±¸¼º¿ä¼Ò·Î È®ÀåµË´Ï´Ù.
C/C++ ³Î·Î Á¾·áµÇ´Â ¹®ÀÚ¿Àº ÀÚü SQLTYPE(¹®ÀÚÀÇ °æ¿ì 460/461 ¹× ±×·¡ÇÈÀÇ °æ¿ì 468/469)¸¦ Æ÷ÇÔÇÕ´Ï´Ù.
C/C++ ³Î·Î Á¾·áµÇ´Â ¹®ÀÚ¿Àº LANGLEVEL »çÀü ó¸® ÄÄÆÄÀÏ·¯ ¿É¼ÇÀÇ °ª¿¡ µû¶ó ´Ù¸£°Ô Á¶ÀýµË´Ï´Ù. SQL¹®¿¡¼ ÀÌ·± SQLTYPE ¹× ¼±¾ð ±æÀÌ n¿¡ ÇØ´çÇϴ ȣ½ºÆ® º¯¼ö Áß Çϳª¸¦ ÁöÁ¤Çϰí, µ¥ÀÌÅÍÀÇ ¹ÙÀÌÆ® ¼ö(¹®ÀÚ À¯ÇüÀÇ °æ¿ì) ¶Ç´Â 2 ¹ÙÀÌÆ® ¹®ÀÚ(±×·¡ÇÈ À¯ÇüÀÇ °æ¿ì)°¡ kÀÏ °æ¿ì:
´Ù¸¥ SQL ¹®¸Æ¿¡¼ ÁöÁ¤ÇÒ °æ¿ì ±æÀ̰¡ nÀΠȣ½ºÆ® º¯¼ö SQLTYPE 460Àº À§¿¡¼ Á¤ÀÇÇÑ n ±æÀÌÀÇ VARCHAR µ¥ÀÌÅÍ À¯ÇüÀ¸·Î 󸮵˴ϴÙ. ´Ù¸¥ SQL ¹®¸Æ¿¡¼ ÁöÁ¤ÇÒ °æ¿ì ±æÀ̰¡ nÀΠȣ½ºÆ® º¯¼ö SQLTYPE 468Àº À§¿¡¼ Á¤ÀÇÇÑ n ±æÀÌÀÇ VARGRAPHIC µ¥ÀÌÅÍ À¯ÇüÀ¸·Î 󸮵˴ϴÙ.
´ÙÀ½ Á¦ÇÑ»çÇ× ¾Æ·¡¼ ƯÁ¤ µ¥ÀÌÅÍ À¯ÇüÀÇ Æ÷ÀÎÅͷΠȣ½ºÆ® º¯¼ö¸¦ ¼±¾ðÇÒ ¼ö ÀÖ½À´Ï´Ù.
char mystring[20]; char (*mystring)[20];
EXEC SQL BEGIN DECLARE SECTION; char (*arr)[10]; /* correct */ char *(arr); /* incorrect */ char *arr[10]; /* incorrect */ EXEC SQL END DECLARE SECTION;
ù¹øÂ° ¼±¾ðÀº 10 ¹ÙÀÌÆ® ¹®ÀÚ ¹è¿ÀÇ Æ÷ÀÎÅÍÀÔ´Ï´Ù. ÀÌ´Â À¯È¿ÇÑ È£½ºÆ® º¯¼öÀÔ´Ï´Ù. µÎ ¹øÂ°´Â À¯È¿ÇÏÁö ¾ÊÀº ¼±¾ðÀÔ´Ï´Ù. ¹®ÀÚÀÇ Æ÷ÀÎÅÍ¿¡¼ °ýÈ£´Â Çã¿ëµÇÁö ¾Ê½À´Ï´Ù. ¼¼ ¹øÂ° ¼±¾ðÀº Æ÷ÀÎÅÍÀÇ ¹è¿ÀÔ´Ï´Ù. ÀÌ´Â Áö¿øµÇÁö ¾Ê´Â µ¥ÀÌÅÍ À¯ÇüÀÔ´Ï´Ù.
È£½ºÆ® º¯¼ö ¼±¾ð:
char *ptr
À§ÀÇ ¼±¾ðÀº ¼ö¿ëµÇÁö¸¸ °áÁ¤µÇÁö ¾ÊÀº ±æÀÌÀÇ ³Î·Î Á¾·áµÇ´Â ¹®ÀÚ¿À» ÀǹÌÇÏÁö´Â ¾Ê½À´Ï´Ù. ´ë½Å °íÁ¤ ±æÀÌÀÇ, ´ÜÀÏ ¹®ÀÚ È£½ºÆ® º¯¼öÀÇ Æ÷ÀÎÅ͸¦ ÀǹÌÇÕ´Ï´Ù. ÀÌ´Â ÀǵµÇÑ ³»¿ëÀÌ ¾Æ´Ò ¼öµµ ÀÖ½À´Ï´Ù. ´Ù¸¥ ¹®ÀÚ¿À» Áö½ÃÇÒ ¼ö ÀÖ´Â Æ÷ÀÎÅÍ È£½ºÆ® º¯¼ö¸¦ Á¤ÀÇÇÏ·Á¸é À§ÀÇ Ã¹¹øÂ° ¼±¾ð ¾ç½ÄÀ» »ç¿ëÇϽʽÿÀ.
EXEC SQL BEGIN DECLARE SECTION; char (*mychar)[20]; /* Pointer to character array of 20 bytes */ EXEC SQL END DECLARE SECTION; EXEC SQL SELECT column INTO :*mychar FROM table; /* Correct */
Ŭ·¡½º³ª ¿ÀºêÁ§Æ® ÀÚü°¡ ¾Æ´Ñ È£½ºÆ® º¯¼ö·Î Ŭ·¡½º µ¥ÀÌÅÍ ±¸¼º¿øÀ» ¼±¾ðÇÒ ¼ö ÀÖ½À´Ï´Ù. ´ÙÀ½ ¿¹´Â »ç¿ëÇÒ ¸Þ¼Òµå¸¦ ³ªÅ¸³À´Ï´Ù.
class STAFF { private: EXEC SQL BEGIN DECLARE SECTION; char staff_name[20]; short int staff_id; double staff_salary; EXEC SQL END DECLARE SECTION; short staff_in_db; . . };
Ŭ·¡½º ±¸¼º¿ø ÇÔ¼ö¿¡¼ C++ ÄÄÆÄÀÏ·¯°¡ Á¦°øÇÏ´Â ³»ÀçµÈ this Æ÷ÀÎÅ͸¦ ÅëÇØ¼¸¸ SQL¹®¿¡¼ µ¥ÀÌÅÍ ±¸¼º¿ø¿¡ ¾×¼¼½ºÇÒ ¼ö ÀÖ½À´Ï´Ù. SQL¹®¿¡¼ SELECT name INTO :my_obj.staff_name ...°ú °°Àº ¿ÀºêÁ§Æ® ÀνºÅϽº¸¦ ¸í½ÃÀûÀ¸·Î ±ÔÁ¤ÇÒ ¼ö ¾ø½À´Ï´Ù.
SQL¹®¿¡¼ Ŭ·¡½º µ¥ÀÌÅÍ ±¸¼º¿øÀ» Á÷Á¢ ÂüÁ¶ÇÒ °æ¿ì µ¥ÀÌÅͺ£À̽º °ü¸® ÇÁ·Î±×·¥¿¡¼ this Æ÷ÀÎÅ͸¦ »ç¿ëÇÏ¿© ÂüÁ¶¸¦ ºÐ¼®ÇÕ´Ï´Ù. ÀÌ ¶§¹®¿¡ ÃÖÀûÈ ·¹º§ »çÀü ó¸® ÄÄÆÄÀÏ ¿É¼Ç(OPTLEVEL)À» ±âº» ¼³Á¤°ª 0(ÃÖÀûÈ ¾ÈÇÔ)À¸·Î µÎ¾î¾ß ÇÕ´Ï´Ù. Áï, µ¥ÀÌÅͺ£À̽º °ü¸® ÇÁ·Î±×·¥¿¡¼ ¾î¶² SQLDA ÃÖÀûȵµ ½ÇÇàÇÏÁö ¾Ê½À´Ï´Ù. ÀÌ´Â SQL¹®¿¡ Æ÷ÀÎÅÍ È£½ºÆ® º¯¼ö°¡ Æ÷Ç﵃ ¶§¸¶´Ù Àû¿ëµË´Ï´Ù.
´ÙÀ½ ¿¹´Â SQL¹®¿¡¼ È£½ºÆ® º¯¼ö·Î ¼±¾ðÇÑ Å¬·¡½º µ¥ÀÌÅÍ ±¸¼º¿øÀ» Á÷Á¢ »ç¿ëÇÏ´Â ¹æ¹ýÀ» ³ªÅ¸³À´Ï´Ù.
class STAFF {
·
·
·
public:
·
·
·
short int hire( void ) { EXEC SQL INSERT INTO staff ( name,id,salary ) VALUES ( :staff_name, :staff_id, :staff_salary ); staff_in_db = (sqlca.sqlcode == 0); return sqlca.sqlcode; } };
ÀÌ ¿¹¿¡¼´Â Ŭ·¡½º µ¥ÀÌÅÍ ±¸¼º¿ø staff_name, staff_id ¹× staff_salaryÀ» INSERT¹®¿¡¼ Á÷Á¢ »ç¿ëÇÕ´Ï´Ù. ÀÌ·± ±¸¼º¿øÀº È£½ºÆ® º¯¼ö·Î ¼±¾ðµÇ¹Ç·Î(È£½ºÆ® º¯¼ö·Î Ŭ·¡½º µ¥ÀÌÅÍ ±¸¼º¿ø ¼±¾ð ¿¹ÀÇ ¿¹ ÂüÁ¶), this Æ÷ÀÎÅ͸¦ ÅëÇØ ÇöÀç ¿ÀºêÁ§Æ®¿¡ ³»ÀçÀûÀ¸·Î ±ÔÁ¤µË´Ï´Ù. SQL¹®¿¡¼ this Æ÷ÀÎÅ͸¦ ÅëÇØ ¾×¼¼½ºÇÒ ¼ö ¾ø´Â µ¥ÀÌÅÍ ±¸¼º¿øÀ» ÂüÁ¶ÇÒ ¼öµµ ÀÖ½À´Ï´Ù. Æ÷ÀÎÅÍ ¶Ç´Â ÂüÁ¶ È£½ºÆ® º¯¼ö¸¦ »ç¿ëÇÏ¿© °£Á¢ÀûÀ¸·Î ÂüÁ¶Çؼ ±×·¸°Ô ÇÒ ¼ö ÀÖ½À´Ï´Ù.
´ÙÀ½ ¿¹´Â µÎ ¹øÂ° ¿ÀºêÁ§Æ® otherGuy¸¦ ÃëÇÏ´Â »õ·Î¿î ¸Þ¼Òµå asWellPaidAs¸¦ ³ªÅ¸³À´Ï´Ù. SQL¹®¿¡¼ ±× ±¸¼º¿øÀ» Á÷Á¢ÀûÀ¸·Î ÂüÁ¶ÇÒ ¼ö ¾øÀ¸¹Ç·Î, ÀÌ ¸Þ¼Òµå´Â Áö¿ª Æ÷ÀÎÅͳª ÂüÁ¶ È£½ºÆ® º¯¼ö¸¦ ÅëÇØ ±× ±¸¼º¿øÀ» °£Á¢ÀûÀ¸·Î ÂüÁ¶ÇÕ´Ï´Ù.
short int STAFF::asWellPaidAs( STAFF otherGuy ) { EXEC SQL BEGIN DECLARE SECTION; short &otherID = otherGuy.staff_id double otherSalary; EXEC SQL END DECLARE SECTION; EXEC SQL SELECT SALARY INTO :otherSalary FROM STAFF WHERE id = :otherID; if( sqlca.sqlcode == 0 ) return staff_salary >= otherSalary; else return 0; }
Embedded SQL¹®¿¡¼ C/C++ ±¸¼º¿ø ¿¬»êÀÚ '.' ¶Ç´Â '->'³ª C++ ¹üÀ§ ºÐ¼® ¿¬»êÀÚ '::'¸¦ »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù. SQL¹® ¿ÜºÎ¿¡¼ ¿øÇÏ´Â ¹üÀ§ º¯¼ö¸¦ Áö½ÃÇϵµ·Ï ¼³Á¤ÇÑ ´ÙÀ½ SQL¹® ¾È¿¡¼ À̸¦ Áö½ÃÇÏ´Â µ¥ »ç¿ëÇÏ´Â Áö¿ª Æ÷ÀÎÅͳª ÂüÁ¶ º¯¼ö¸¦ ÅëÇØ °°Àº ÀÛ¾÷À» ½±°Ô ÇÒ ¼ö ÀÖ½À´Ï´Ù. ´ÙÀ½ ¿¹´Â »ç¿ëÇÒ ¿Ã¹Ù¸¥ ¸Þ¼Òµå¸¦ ³ªÅ¸³À´Ï´Ù.
EXEC SQL BEGIN DECLARE SECTION; char (& localName)[20] = ::name; EXEC SQL END DECLARE SECTION; EXEC SQL SELECT name INTO :localName FROM STAFF WHERE name = 'Sanders';
C ¶Ç´Â C++ ÀÀ¿ëÇÁ·Î±×·¥¿¡¼ ±×·¡ÇÈ µ¥ÀÌÅ͸¦ Á¶ÀýÇÏ·Á¸é DB2¿¡¼ Á¦°øÇÏ´Â sqldbchar µ¥ÀÌÅÍ À¯ÇüÀ̳ª wchar_t C/C++ µ¥ÀÌÅÍ À¯Çü¿¡ µû¶ó È£½ºÆ® º¯¼ö¸¦ »ç¿ëÇϽʽÿÀ. ÀÌ·± È£½ºÆ® º¯¼öÀÇ À¯ÇüÀ» GRAPHIC, VARGRAPHIC ¶Ç´Â DBCLOBÀÎ Å×À̺í Ä÷³¿¡ ÇÒ´çÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, Å×À̺íÀÇ GRAPHIC ¶Ç´Â VARGRAPHIC Ä÷³¿¡¼ DBCS µ¥ÀÌÅ͸¦ °»½ÅÇϰųª ¼±ÅÃÇÒ ¼ö ÀÖ½À´Ï´Ù.
±×·¡ÇÈ È£½ºÆ® º¯¼öÀÇ À¯È¿ÇÑ ¾ç½ÄÀº ´ÙÀ½°ú °°ÀÌ ¼¼ °¡ÁöÀÔ´Ï´Ù.
´ÜÀÏ ±×·¡ÇÈ È£½ºÆ® º¯¼ö¿¡´Â GRAPHIC(1) SQL µ¥ÀÌÅÍ À¯Çü¿¡ ÇØ´çÇÏ´Â 468/469ÀÇ SQLTYPE°¡ ÀÖ½À´Ï´Ù. ±×·¡ÇÈ ¼±¾ð ±¸¹®(´ÜÀÏ ±×·¡ÇÈ ¾ç½Ä°ú ³Î·Î Á¾·áµÇ´Â ±×·¡ÇÈ ¾ç½Ä)¿¡¼ ÀÚ¼¼ÇÑ ³»¿ëÀ» ÂüÁ¶ÇϽʽÿÀ.
³Î·Î Á¾·áµÈ´Ù´Â °ÍÀº, ±×·¡ÇÈ ¹®ÀÚ¿ Áß ¸¶Áö¸· ¹®ÀÚÀÇ ¸ðµç ¹ÙÀÌÆ®¿¡ 2Áø 0('\0's)ÀÌ Æ÷ÇԵǴ »óȲÀ» ÀǹÌÇÕ´Ï´Ù. ¿©±â¿¡´Â 400/401ÀÇ SQLTYPE°¡ Æ÷ÇԵ˴ϴÙ. ±×·¡ÇÈ ¼±¾ð ±¸¹®(´ÜÀÏ ±×·¡ÇÈ ¾ç½Ä°ú ³Î·Î Á¾·áµÇ´Â ±×·¡ÇÈ ¾ç½Ä)¿¡¼ ÀÚ¼¼ÇÑ ³»¿ëÀ» ÂüÁ¶ÇϽʽÿÀ.
±× ±æÀ̰¡ 1°ú 16 336 »çÀÌÀÏ °æ¿ì VARGRAPHIC ±¸Á¶ È£½ºÆ® º¯¼ö¿¡´Â 464/465ÀÇ SQLTYPE°¡ Æ÷ÇԵ˴ϴÙ. ±× ±æÀ̰¡ 2000°ú 16 350 ¹ÙÀÌÆ® »çÀÌÀÏ °æ¿ì 472/473ÀÇ SQLTYPE°¡ Æ÷ÇԵ˴ϴÙ. ±×·¡ÇÈ ¼±¾ðÀÇ ±¸¹®(VARGRAPHIC ±¸Á¶ ¾ç½Ä)¿¡¼ ÀÚ¼¼ÇÑ ³»¿ëÀ» ÂüÁ¶ÇϽʽÿÀ.
ÀϺΠ¹®ÀÚ ¿£ÄÚµù ½ºÅ°¸¶, ƯÈ÷ ¼¾Æ½Ã¾Æ ±¹°¡ÀÇ ¹®ÀÚ ¿£ÄÚµù ½ºÅ°¸¶ÀÇ °æ¿ì ¹®ÀÚ¸¦ Ç¥½ÃÇϴµ¥ º¹¼ö ¹ÙÀÌÆ®°¡ ÇÊ¿äÇÕ´Ï´Ù. µ¥ÀÌÅÍ¿¡ ´ëÇÑ ¿ÜºÎ Ç¥½Ã¸¦ ¹®ÀÚ¿¡ ´ëÇÑ º¹¼ö ¹ÙÀÌÆ® ¹®ÀÚ ÄÚµå Ç¥½Ã¶ó ÇÏ¸ç ¿©±â¿¡´Â 2 ¹ÙÀÌÆ® ¹®ÀÚ(2 ¹ÙÀÌÆ®·Î Ç¥½ÃµÇ´Â ¹®ÀÚ)°¡ Æ÷ÇԵ˴ϴÙ. DB2ÀÇ ±×·¡ÇÈ µ¥ÀÌÅÍ´Â 2 ¹ÙÀÌÆ® ¹®ÀÚ·Î ±¸¼ºµË´Ï´Ù.
2 ¹ÙÀÌÆ® ¹®ÀÚ·Î ¹®ÀÚ¿À» Á¶ÀÛÇÏ·Á¸é ÀÀ¿ëÇÁ·Î±×·¥¿¡¼ µ¥ÀÌÅÍ¿¡ ´ëÇÑ ³»ºÎ Ç¥½Ã¸¦ »ç¿ëÇÏ´Â °ÍÀÌ Æí¸®ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ ³»ºÎ Ç¥½Ã¸¦ 2 ¹ÙÀÌÆ® ¹®ÀÚ¿¡ ´ëÇÑ ¿ÍÀÌµå ¹®ÀÚ ÄÚµå¶ó Çϸç ÀÌ Ç¥½Ã´Â wchar_t C/C++ µ¥ÀÌÅÍ À¯Çü¿¡ °ü½ÀÀûÀ¸·Î »ç¿ëµÇ´Â Çü½ÄÀÔ´Ï´Ù. ANSI C ¹× X/OPEN Portability Guide 4(XPG4)¸¦ µû¸£´Â ¼ºê·çƾÀ» »ç¿ëÇÏ¿© ¿ÍÀÌµå ¹®ÀÚ µ¥ÀÌÅ͸¦ ó¸®ÇÏ°í ¿ÍÀÌµå ¹®ÀÚ Çü½ÄÀÇ µ¥ÀÌÅÍ¿Í º¹¼ö ¹ÙÀÌÆ® Çü½Ä »çÀÌ¿¡¼ º¯È¯ÇÒ ¼ö ÀÖ½À´Ï´Ù.
ÀÀ¿ëÇÁ·Î±×·¥¿¡¼ º¹¼ö ¹ÙÀÌÆ® Çü½ÄÀ̳ª ¿ÍÀÌµå ¹®ÀÚ Çü½ÄÀ¸·Î ¹®ÀÚ¸¦ ó¸®ÇÒ ¼ö ÀÖÁö¸¸ DBCS(º¹¼ö ¹ÙÀÌÆ®) ¹®ÀÚ Äڵ常À¸·Î µ¥ÀÌÅͺ£À̽º °ü¸® ÇÁ·Î±×·¥°úÀÇ »óÈ£ÀÛ¿ëÀÌ ½ÇÇàµÈ´Ù´Â Á¡¿¡ ÁÖÀÇÇϽʽÿÀ. Áï, µ¥ÀÌÅÍ´Â GRAPHIC Ä÷³¿¡ DBCS Çü½ÄÀ¸·Î ÀúÀåµÇ¸ç ¿©±â¼ °Ë»öµË´Ï´Ù. WCHARTYPE »çÀü ó¸® ÄÄÆÄÀÏ·¯ ¿É¼ÇÀº, µ¥ÀÌÅͺ£À̽º ¿£Áø°ú ±³È¯ÇÒ ¶§ ¿ÍÀÌµå ¹®ÀÚ Çü½ÄÀÇ ÀÀ¿ëÇÁ·Î±×·¥ µ¥ÀÌÅ͸¦ º¹¼ö ¹ÙÀÌÆ® Çü½ÄÀ¸·Î ¶Ç´Â ±× ¹Ý´ë·Î º¯È¯ÇÒ ¼ö ÀÖµµ·Ï Á¦°øµË´Ï´Ù.
ƯÁ¤ ÄÚµå ÆäÀÌÁö¿¡ ´ëÇØ DB2 ±×·¡ÇÈ µ¥ÀÌÅÍÀÇ Å©±â¿Í ¿£ÄÚµùÀÌ Ç÷§Æû »çÀÌ¿¡¼ ÀÏÁ¤ÇÏÁö¸¸ ANSI C ¶Ç´Â C++ wchar_t µ¥ÀÌÅÍ À¯ÇüÀÇ Å©±â¿Í ³»ºÎ Çü½ÄÀº »ç¿ëÇÏ´Â ÄÄÆÄÀÏ·¯¿Í »ç¿ëÀÚ°¡ ÀÖ´Â Ç÷§Æû¿¡ µû¶ó ´Þ¶óÁý´Ï´Ù. ±×·¯³ª DB2¿¡¼ sqldbchar µ¥ÀÌÅÍ À¯ÇüÀ» 2 ¹ÙÀÌÆ® Å©±â·Î Á¤ÀÇÇϸç, ÀÌ´Â µ¥ÀÌÅͺ£À̽º¿¡ Á¤ÀÇµÈ °Í°ú °°Àº Çü½ÄÀ¸·Î DBCS ¹× UCS-2 µ¥ÀÌÅ͸¦ Á¶ÀÛÇÏ´Â ÀÏÁ¾ÀÇ ÀÌ½Ä ¹æ½ÄÀÔ´Ï´Ù. UCS-2 µ¥ÀÌÅÍ¿¡ ´ëÇØ¼´Â ÀϺ»¾î ¹× ´ë¸¸¾î EUC ¹× UCS-2 ÄÚµå ¼¼Æ® º¯È¯°ú °ü¸® ¾È³»¼¿¡¼ ÀÚ¼¼ÇÑ ³»¿ëÀ» ÂüÁ¶ÇϽʽÿÀ.
wchar_t ¶Ç´Â sqldbcharÀ» »ç¿ëÇÏ¿© ¸ðµç DB2 C ±×·¡ÇÈ È£½ºÆ® º¯¼ö À¯ÇüÀ» Á¤ÀÇÇÒ ¼ö ÀÖ½À´Ï´Ù. C ¹× C++ÀÇ WCHARTYPE »çÀü ó¸® ÄÄÆÄÀÏ·¯ ¿É¼Ç¿¡¼ ¼³¸íÇÑ ´ë·Î WCHARTYPE CONVERT »çÀü ó¸® ÄÄÆÄÀÏ ¿É¼ÇÀ» »ç¿ëÇÏ¿© ÀÀ¿ëÇÁ·Î±×·¥À» ºôµåÇÒ °æ¿ì wchar_t¸¦ »ç¿ëÇØ¾ß ÇÕ´Ï´Ù.
ÁÖ: | Windows Ç÷§Æû¿¡¼ WCHARTYPE CONVERT ¿É¼ÇÀ» ÁöÁ¤ÇÒ °æ¿ì Windows Ç÷§ÆûÀÇ wchar_t°¡ À¯´ÏÄÚµå¶ó´Â Á¡¿¡ ÁÖÀÇÇØ¾ß ÇÕ´Ï´Ù. µû¶ó¼ C/C++ ÄÄÆÄÀÏ·¯ÀÇ wchar_t°¡ À¯´ÏÄڵ尡 ¾Æ´Ò °æ¿ì wcstombs() À¯´ÏÄÚµå ÇÔ¼ö È£ÃâÀÌ SQLCODE -1421 (SQLSTATE=22504)·Î ½ÇÆÐÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ·± °æ¿ì WCHARTYPE NOCONVERT ¿É¼ÇÀ» ÁöÁ¤Çϰí, ÇÁ·Î±×·¥¿¡¼ wcstombs() ¹× mbstowcs() ÇÔ¼ö¸¦ ¸í½ÃÀûÀ¸·Î È£ÃâÇÒ ¼ö ÀÖ½À´Ï´Ù. |
WCHARTYPE NOCONVERT »çÀü ó¸® ÄÄÆÄÀÏ ¿É¼ÇÀ¸·Î ÀÀ¿ëÇÁ·Î±×·¥À» ºôµåÇÒ °æ¿ì ¼·Î ´Ù¸¥ DB2 Ŭ¶óÀÌ¾ðÆ®¿Í ¼¹ö Ç÷§Æû°£ÀÇ ÃÖ´ë À̽ļºÀ» À§ÇØ sqldbcharÀ» »ç¿ëÇØ¾ß ÇÕ´Ï´Ù. WCHARTYPE NOCONVERT¿¡ wchar_t¸¦ »ç¿ëÇÒ ¼ö ÀÖÁö¸¸ wchar_t¸¦ 2 ¹ÙÀÌÆ® ±æÀÌ·Î Á¤ÀÇÇÑ Ç÷§Æû¿¡¼¸¸ °¡´ÉÇÕ´Ï´Ù.
È£½ºÆ® º¯¼ö ¼±¾ð¿¡¼ wchar_t³ª sqldbcharÀ» Ʋ¸®°Ô »ç¿ëÇÒ °æ¿ì »çÀü ó¸® ÄÄÆÄÀϽà SQLCODE 15 (no SQLSTATE)¸¦ ¼ö½ÅÇÏ°Ô µË´Ï´Ù.
WCHARTYPE »çÀü ó¸® ÄÄÆÄÀÏ·¯ ¿É¼ÇÀ» »ç¿ëÇÏ¿©, C/C++ ÀÀ¿ëÇÁ·Î±×·¥¿¡¼ »ç¿ëÇÏ·Á´Â ±×·¡ÇÈ ¹®ÀÚ¸¦ ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ ¿É¼ÇÀ» »ç¿ëÇÏ¸é ±×·¡ÇÈ µ¥ÀÌÅ͸¦ º¹¼ö ¹ÙÀÌÆ® Çü½ÄÀ¸·Î À¯ÁöÇÒÁö ¾Æ´Ï¸é ¿ÍÀÌµå ¹®ÀÚ Çü½ÄÀ¸·Î À¯ÁöÇÒÁö À¶Å뼺ÀÖ°Ô ¼±ÅÃÇÒ ¼ö ÀÖ½À´Ï´Ù. WCHARTYPE ¿É¼ÇÀÇ °¡´ÉÇÑ °ªÀº ´ÙÀ½°ú °°ÀÌ µÎ °¡ÁöÀÔ´Ï´Ù.
WCHARTYPE CONVERT¸¦ »ç¿ëÇÒ °æ¿ìÀÇ ÀÌÁ¡Àº, µ¥ÀÌÅͺ£À̽º °ü¸® ÇÁ·Î±×·¥°ú Åë½ÅÇϱâ Àü¿¡ ¸í½ÃÀûÀ¸·Î µ¥ÀÌÅ͸¦ º¹¼ö ¹ÙÀÌÆ® Çü½ÄÀ¸·Î º¯È¯ÇÏÁö ¾Ê°íµµ ÀÀ¿ëÇÁ·Î±×·¥¿¡¼ L-¸®ÅÍ·²À̳ª 'wc' ¹®ÀÚ¿ ÇÔ¼ö¿Í °°Àº ¿ÍÀÌµå ¹®ÀÚ¿ 󸮸¦ À§ÇØ ANSI C ¸ÞÄ«´ÏÁòÀ» ¿ÏÀüÇÏ°Ô È°¿ëÇÒ ¼ö ÀÖ´Ù´Â °ÍÀÔ´Ï´Ù. ´ÜÁ¡Àº, ³»ÀçµÈ º¯È¯ÀÌ ·±Å¸ÀÓ¿¡¼ ÀÀ¿ëÇÁ·Î±×·¥ÀÇ ¼º´É¿¡ ¿µÇâÀ» ÁÙ ¼ö ÀÖÀ¸º ¸Þ¸ð¸® ¿ä±¸»çÇ×À» Áõ°¡½Ãų ¼ö ÀÖ´Ù´Â °ÍÀÔ´Ï´Ù.
WCHARTYPE CONVERT¸¦ ¼±ÅÃÇÒ °æ¿ì sqldbchar ´ë½Å wchar_t¸¦ »ç¿ëÇÏ¿© ¸ðµç ±×·¡ÇÈ È£½ºÆ® º¯¼ö¸¦ ¼±¾ðÇϽʽÿÀ.
WCHARTYPE CONVERT ¼öÇàÀ» ¿øÇÏÁö¸¸ CLI ÀÀ¿ëÇÁ·Î±×·¥°ú °°Àº »ç¿ëÀÚÀÇ ÀÀ¿ëÇÁ·Î±×·¥À» »çÀü ó¸® ÄÄÆÄÀÏÇÒ Çʿ䰡 ¾øÀ» °æ¿ì ÄÄÆÄÀÏ Å¸ÀÓ¿¡¼ C ¼±Çà 󸮱⠸ÅÅ©·Î SQL_WCHART_CONVERT¸¦ Á¤ÀÇÇϽʽÿÀ. ±×·¸°Ô Çϸé DB2 Çì´õ ÆÄÀÏÀÇ Æ¯Á¤ Á¤ÀÇ¿¡¼ sqldbchar ´ë½Å wchar_t µ¥ÀÌÅÍ À¯ÇüÀ» »ç¿ëÇÏ°Ô µË´Ï´Ù.
ÁÖ: | DB2 Windows 3.1 Ŭ¶óÀÌ¾ðÆ®¿¡¼ ¼öÇà ÁßÀÎ ÇÁ·Î±×·¥¿¡¼´Â ÇöÀç WCHARTYPE CONVERT »çÀü ó¸® ÄÄÆÄÀÏ ¿É¼ÇÀ» Áö¿øÇÏÁö ¾Ê½À´Ï´Ù. ÀÌ·± ÇÁ·Î±×·¥ÀÇ °æ¿ì ±âº»°ª(WCHARTYPE NOCONVERT)À» »ç¿ëÇϽʽÿÀ. |
WCHARTYPE NOCONVERT¸¦ ¼±ÅÃÇÒ °æ¿ì ´Ù¸¥ DB2 Ŭ¶óÀ̾ðÆ®/¼¹ö Ç÷§Æû°úÀÇ À̽ļºÀ» ÃÖ´ëÈÇϱâ À§ÇØ sqldbchar À¯ÇüÀ» »ç¿ëÇÏ¿© ¸ðµç ±×·¡ÇÈ È£½ºÆ® º¯¼ö¸¦ ¼±¾ðÇϽʽÿÀ.
Command Reference¿¡¼ ÀÚ¼¼ÇÑ ³»¿ëÀ» ÂüÁ¶ÇϽʽÿÀ.
´ÙÀ½Àº »ç¿ëÀÚ°¡ µû¶ó¾ß ÇÒ ±âŸ ÁöħÀÔ´Ï´Ù.
ÁÖ:
ÀÀ¿ëÇÁ·Î±×·¥ ÄÚµå ÆäÀÌÁö°¡ ÀϺ¸¾ð ¶Ç´Â ´ë¸¸¾î EUCÀ̰ųª ÀÀ¿ëÇÁ·Î±×·¥¿¡¼ UCS-2 µ¥ÀÌÅͺ£À̽º¿¡ ¿¬°áÇÒ °æ¿ì CONVERT ¶Ç´Â NOCONVERT ¿É¼Ç, wchar_t ¶Ç´Â sqldbchar ±×·¡ÇÈ È£½ºÆ® º¯¼ö ¶Ç´Â ÀÔ·Â/Ãâ·Â SQLDA¸¦ »ç¿ëÇÏ¿© µ¥ÀÌÅͺ£À̽º ¼¹ö¿¡ ÀÖ´Â GRAPHIC Ä÷³¿¡ ¾×¼¼½ºÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ Àý¿¡¼ DBCS Çü½ÄÀº EUC µ¥ÀÌÅÍ¿¡ ´ëÇÑ UCS-2 ¿£ÄÚµù ½ºÅ°¸¶¸¦ ÀǹÌÇÕ´Ï´Ù. ´ÙÀ½ °æ¿ì¸¦ °í·ÁÇϽʽÿÀ.
DB2 Ŭ¶óÀÌ¾ðÆ®°¡ ¿ÍÀÌµå ¹®ÀÚ Çü½Ä¿¡¼ ÀÀ¿ëÇÁ·Î±×·¥ ÄÚµå ÆäÀÌÁö·Î µ¥ÀÌÅ͸¦ º¯È¯ÇÑ ´ÙÀ½ ÀÔ·Â SQLDA¸¦ µ¥ÀÌÅͺ£À̽º ¼¹ö·Î Àü¼ÛÇϱâ Àü¿¡ UCS-2·Î º¯È¯ÇÕ´Ï´Ù. µ¥ÀÌÅͺ£À̽º ¼¹ö·Î Àü¼ÛµÇ´Â ¸ðµç ±×·¡ÇÈ µ¥ÀÌÅÍ¿¡´Â UCS-2 ÄÚµå ÆäÀÌÁö ½Äº°ÀÚ°¡ ű׷ΠÁöÁ¤µË´Ï´Ù. È¥ÇÕ ¹®ÀÚ µ¥ÀÌÅÍ¿¡´Â ÀÀ¿ëÇÁ·Î±×·¥ ÄÚµå ÆäÀÌÁö ½Äº°ÀÚ°¡ ű׷ΠÁöÁ¤µË´Ï´Ù. Ŭ¶óÀÌ¾ðÆ®°¡ µ¥ÀÌÅͺ£À̽º¿¡¼ ±×·¡ÇÈ µ¥ÀÌÅ͸¦ °Ë»öÇÒ ¶§ µ¥ÀÌÅÍ¿¡ UCS-2 ÄÚµå ÆäÀÌÁö ½Äº°ÀÚ°¡ ű׷ΠÁöÁ¤µË´Ï´Ù. DB2 Ŭ¶óÀÌ¾ðÆ®°¡ UCS-2¿¡¼ Ŭ¶óÀÌ¾ðÆ® ÀÀ¿ëÇÁ·Î±×·¥ ÄÚµå ÆäÀÌÁö·Î º¯È¯ÇÑ ´ÙÀ½ ¿ÍÀÌµå ¹®ÀÚ Çü½ÄÀ¸·Î º¯È¯ÇÕ´Ï´Ù. È£½ºÆ® º¯¼ö ´ë½Å ÀÔ·Â SQLDA¸¦ »ç¿ëÇÒ °æ¿ì ¿ÍÀÌµå ¹®ÀÚ Çü½ÄÀ» »ç¿ëÇÏ¿© ±×·¡ÇÈ µ¥ÀÌÅ͸¦ ¿£ÄÚµùÇß´ÂÁö È®ÀÎÇØ¾ß ÇÕ´Ï´Ù. ÀÌ µ¥ÀÌÅÍ´Â UCS-2·Î º¯È¯µÈ ´ÙÀ½ µ¥ÀÌÅͺ£À̽º ¼¹ö·Î Àü¼ÛµË´Ï´Ù. ÀÌ·± º¯È¯Àº ¼º´É¿¡ ¿µÇâÀ» ÁÝ´Ï´Ù.
±×·¡ÇÈ µ¥ÀÌÅÍ´Â DB2¿¡¼ UCS-2¸¦ »ç¿ëÇÏ¿© ¿£ÄÚµùÇϰí UCS-2 ÄÚµå ÆäÀÌÁö¸¦ ÅëÇØ űװ¡ ÁöÁ¤µÇ¸ç º¯È¯Àº ½ÇÇàµÇÁö ¾Ê½À´Ï´Ù. DB2¿¡¼´Â ±×·¡ÇÈ È£½ºÆ® º¯¼ö°¡ ´ÜÁö ÇÑ ÁýÇÕÀ¸·Î »ç¿ëµÇ°í ÀÖ´Ù°í °¡Á¤ÇÕ´Ï´Ù. NOCONVERT ¿É¼ÇÀ» ¼±ÅÃÇÏ¸é µ¥ÀÌÅͺ£À̽º ¼¹ö¿¡¼ °Ë»öÇÑ ±×·¡ÇÈ µ¥ÀÌÅͰ¡ UCS-2¸¦ »ç¿ëÇÏ¿© ¿£ÄÚµùÇÑ ÀÀ¿ëÇÁ·Î±×·¥À¸·Î Àü´ÞµË´Ï´Ù. ÀÀ¿ëÇÁ·Î±×·¥ ÄÚµå ÆäÀÌÁö¿¡¼ UCS-2·Î, UCS-2¿¡¼ ÀÀ¿ëÇÁ·Î±×·¥ ÄÚµå ÆäÀÌÁö·ÎÀÇ ¸ðµç º¯È¯Àº »ç¿ëÀÚ°¡ ´ã´çÇØ¾ß ÇÕ´Ï´Ù. UCS-2 ½Äº°ÀÚ Å±װ¡ ÁöÁ¤µÈ µ¥ÀÌÅÍ´Â º¯È¯À̳ª º¯°æ¾øÀÌ µ¥ÀÌÅͺ£À̽º ¼¹ö·Î Àü¼ÛµË´Ï´Ù.
º¯È¯À» ÃÖ¼ÒÈÇϱâ À§ÇØ NOCONVERT ¿É¼ÇÀ» »ç¿ëÇϰí ÀÀ¿ëÇÁ·Î±×·¥¿¡¼ º¯È¯À» Á¶ÀýÇϰųª GRAPHIC Ä÷³À» »ç¿ëÇÏÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. Windows NT ¶Ç´Â AIX ¹öÀü 4.3 ÀÌ»ó°ú °°ÀÌ wchar_t ¿£ÄÚµùÀÌ 2 ¹ÙÀÌÆ® À¯´ÏÄÚµåÀΠŬ¶óÀÌ¾ðÆ® È¯°æÀÇ °æ¿ì NOCONVERT ¿É¼ÇÀ» »ç¿ëÇÏ¿© UCS-2¿¡ ´ëÇØ Á÷Á¢ ÀÛ¾÷ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ·± °æ¿ì »ç¿ëÀÚÀÇ ÀÀ¿ëÇÁ·Î±×·¥¿¡¼ Å« ³¡ Çü½Ä°ú ÀÛÀº ³¡ Çü½Ä »çÀÌÀÇ Â÷ÀÌÁ¡À» Á¶ÀýÇØ¾ß ÇÕ´Ï´Ù. NOCONVERT ¿É¼ÇÀ» »ç¿ëÇÒ °æ¿ì DB2 Universal Database¿¡¼ Ç×»ó 2 ¹ÙÀÌÆ® Å« ³¡ Çü½ÄÀÎ sqldbcharÀ» »ç¿ëÇÕ´Ï´Ù.
NOCONVERT¸¦ ÁöÁ¤ÇÑ °æ¿ì UCS-2À¸·Î º¯È¯ ÈÄ ¶Ç´Â CONVERT¸¦ ÁöÁ¤ÇÑ °æ¿ì ¿ÍÀÌµå ¹®ÀÚ Çü½ÄÀ¸·Î º¯È¯ÇÏ¿© IBM-eucJP/IBM-eucTW CS0 (7 ºñÆ® ASCII) ¹× IBM-eucJP CS2 (Katakana) µ¥ÀÌÅ͸¦ ±×·¡ÇÈ È£½ºÆ® º¯¼ö¿¡ ÇÒ´çÇÏÁö ¸¶½Ê½Ã¿À. UCS-2¿¡¼ PC DBCS·Î º¯È¯ÇÒ¶§ ÀÌ·± EUC ÄÚµå ¼¼Æ®¿¡ ÀÖ´Â ¹®ÀÚ°¡ 1 ¹ÙÀÌÆ®°¡ µÇ±â ¶§¹®ÀÔ´Ï´Ù.
ÀϹÝÀûÀ¸·Î eucJP ¹× eucTW¿¡¼ GRAPHIC µ¥ÀÌÅ͸¦ UCS-2·Î ÀúÀåÇÏ´õ¶óµµ ÀÌ·± µ¥ÀÌÅͺ£À̽ºÀÇ GRAPHIC µ¥ÀÌÅÍ´Â ¿©ÀüÈ÷ ºñ-ASCII eucJP ¶Ç´Â eucTW µ¥ÀÌÅÍÀÔ´Ï´Ù. ƯÈ÷ ÀÌ·± GRAPHIC µ¥ÀÌÅÍ¿¡ ä¿öÁö´Â °ø¹éÀº DBCS °ø¹é(UCS-2, U+3000ÀÇ Ç¥ÀÇÀûÀÎ °ø¹éÀ̶ó°íµµ ÇÔ)ÀÔ´Ï´Ù. ±×·¯³ª UCS-2 µ¥ÀÌÅͺ£À̽ºÀÇ °æ¿ì GRAPHIC µ¥ÀÌÅÍ¿¡´Â ¸ðµç UCS-2 ¹®ÀÚ°¡ µé¾î°¥ ¼ö ÀÖÀ¸¸ç °ø¹é ä¿òÀº UCS-2 °ø¹é, U+0020À¸·Î ½ÇÇàµË´Ï´Ù. UCS-2 µ¥ÀÌÅͺ£À̽º¿¡¼ UCS-2 µ¥ÀÌÅÍ ´ë eucJP ¹× eucTW µ¥ÀÌÅͺ£À̽º¿¡¼ UCS-2 µ¥ÀÌÅ͸¦ °Ë»öÇϵµ·Ï ÀÀ¿ëÇÁ·Î±×·¥À» ÄÚµùÇÒ ¶§ ÀÌ Â÷ÀÌÁ¡À» ±â¾ïÇØ µÎ¾î¾ß ÇÕ´Ï´Ù.
ÀÏ¹Ý EUC ÀÀ¿ëÇÁ·Î±×·¥ °³¹ß Áöħ¿¡ ´ëÇØ¼´Â ÀϺ»¾î ¹× ´ë¸¸¾î EUC ¹× UCS-2 ÄÚµå ¼¼Æ® º¯È¯¿¡¼ ÀÚ¼¼ÇÑ ³»¿ëÀ» ÂüÁ¶ÇϽʽÿÀ.