È£½ºÆ® º¯¼ö´Â Embedded SQL¹®¿¡ ÀÇÇØ ÂüÁ¶µÇ´Â º¯¼öÀÔ´Ï´Ù. À̵éÀº µ¥ÀÌÅͺ£À̽º °ü¸® ÇÁ·Î±×·¥°ú ÀÀ¿ëÇÁ·Î±×·¥ »çÀÌÀÇ µ¥ÀÌÅ͸¦ Àü¼ÛÇÕ´Ï´Ù. SQL¹®¿¡¼ È£½ºÆ® º¯¼ö¸¦ »ç¿ëÇÒ ¶§ Äݷаú ÇÔ²² À̸§À¸·Î Á¢µÎºÎ¸¦ ±¸¼ºÇØ¾ß ÇÕ´Ï´Ù(¿¹. :). È£½ºÆ® ¾ð¾î ¸í·É¹®¿¡¼ È£½ºÆ® º¯¼ö¸¦ »ç¿ëÇÒ ¶§¿¡´Â ÄÝ·ÐÀ» »ý·«ÇϽʽÿÀ.
È£½ºÆ® º¯¼ö´Â ÄÄÆÄÀÏµÈ È£½ºÆ® ¾ð¾î·Î ¼±¾ðµÇ°í, BEGIN DECLARE SECTION¹® ¹× END DECLARE SECTION¹®À¸·Î ºÐ¸®µË´Ï´Ù. ÀÌ·¯ÇÑ ¸í·É¹®À» ÀÌ¿ëÇÏ¿© »çÀü ó¸® ÄÄÆÄÀÏ·¯°¡ ¼±¾ð¹®À» ¹ß°ßÇÒ ¼ö ÀÖ½À´Ï´Ù.
ÁÖ: | Java JDBC ¹× SQLJ ÇÁ·Î±×·¥Àº ¼±¾ð ÀýÀ» »ç¿ëÇÏÁö ¾Ê½À´Ï´Ù. Java¾î·Î µÈ È£½ºÆ® º¯¼ö´Â ÀϹÝÀûÀÎ Java º¯¼ö ¼±¾ð ±¸¹®À» µû¸¨´Ï´Ù. |
È£½ºÆ® º¯¼ö´Â È£½ºÆ® ¾ð¾îÀÇ ºÎ¼Ó ÁýÇÕÀ» »ç¿ëÇÏ¿© ¼±¾ðµË´Ï´Ù. »ç¿ëÀÚÀÇ È£½ºÆ® ¾ð¾î¿¡ ´ëÇÑ Áö¿ø ±¸¹®¿¡ ´ëÇÑ ¼³¸íÀº ´ÙÀ½À» ÂüÁ¶ÇϽʽÿÀ.
´ÙÀ½ ±ÔÄ¢Àº È£½ºÆ® º¯¼ö ¼±¾ð Àý¿¡ Àû¿ëµË´Ï´Ù.
SQL¹®À» º¼ ¶§, ´ÜÀÏ ¼Ò½º ÆÄÀÏ¿¡¼ ½ÇÁ¦·Î ¼±¾ðµÇ´Â À§Ä¡¿Í °ü°è¾øÀÌ ¸ðµç È£½ºÆ® º¯¼ö¿¡´Â Àüü ¹üÀ§¸¦ °¡Áý´Ï´Ù. µû¶ó¼, È£½ºÆ® º¯¼ö À̸§Àº ¼Ò½º ÆÄÀÏ ³»¿¡¼ °íÀ¯ÇØ¾ß ÇÕ´Ï´Ù.
ÀÌ´Â DB2 »çÀü ó¸® ÄÄÆÄÀÏ·¯°¡ È£½ºÆ® º¯¼öÀÇ ¹üÀ§¸¦ Àü¿ªÀ¸·Î º¯°æÇÏ¿©, Á¤ÀǵǴ ¹üÀ§ ¿ÜºÎ¿¡¼ ¾×¼¼½ºµÉ ¼ö ÀÖÀ½À» ÀǹÌÇÏÁö´Â ¾Ê½À´Ï´Ù. ´ÙÀ½ ¿¹¸¦ °í·ÁÇϽʽÿÀ.
foo1(){ . . . BEGIN SQL DECLARE SECTION; int x; END SQL DECLARE SECTION; x=10; . . . } foo2(){ . . . y=x; . . . }
¾ð¾î¿¡ µû¶ó x º¯¼ö´Â foo2() ÇÔ¼ö¿¡¼ ¼±¾ðµÇÁö ¾Ê°Å³ª x °ªÀÌ foo2()·Î 10À¸·Î ¼³Á¤µÇÁö ¾ÊÀ¸¹Ç·Î À§ ¿¹´Â ÄÄÆÄÀÏÇÏ´Â µ¥ ½ÇÆÐÇÕ´Ï´Ù. ÀÌ·¯ÇÑ ¹®Á¦¸¦ ÇÇÇÏ·Á¸é Àü¿ª º¯¼ö·Î¼ x¸¦ ¼±¾ðÇϰųª, ¸Å°³º¯¼ö·Î¼ x¸¦ ´ÙÀ½°ú °°ÀÌ foo2() ÇÔ¼ö·Î Àü´ÞÇØ¾ß ÇÕ´Ï´Ù.
foo1(){ . . . BEGIN SQL DECLARE SECTION; int x; END SQL DECLARE SECTION; x=10; foo2(x); . . . } foo2(int x){ . . . y=x; . . . }
È£½ºÆ® º¯¼ö ¼±¾ð¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ Á¤º¸´Â ´ÙÀ½À» ÂüÁ¶ÇϽʽÿÀ.
Declaration Generator´Â µ¥ÀÌÅͺ£À̽º¿¡ Á¦°øµÈ Å×ÀÌºí¿¡ ´ëÇØ ¼±¾ð¹®À» »ý¼ºÇÏ¿© ÀÀ¿ëÇÁ·Î±×·¥ °³¹ßÀ» °¡¼ÓÈÇÕ´Ï´Ù. ÀÌ À¯Æ¿¸®Æ¼´Â »ç¿ëÀÚ ÀÀ¿ëÇÁ·Î±×·¥¿¡ ½±°Ô »ðÀÔÇÒ ¼ö ÀÖ´Â Embedded SQL ¼±¾ð¹® ¼Ò½º ÆÄÀÏÀ» ÀÛ¼ºÇÕ´Ï´Ù. db2dclgnÀº C/C++, Java, COBOL ¹× FORTRAN ¾ð¾î¸¦ Áö¿øÇÕ´Ï´Ù.
¼±¾ð ÆÄÀÏÀ» »ý¼ºÇÏ·Á¸é ´ÙÀ½ Çü½ÄÀ¸·Î db2dclgn ¸í·ÉÀ» ÀÔ·ÂÇϽʽÿÀ.
db2dclgn -d database-name -t table-name [options]
¿¹¸¦ µé¾î, staff.h Ãâ·Â ÆÄÀÏ¿¡¼ C·Î µÈ SAMPLE µ¥ÀÌÅͺ£À̽º¿¡ STAFF Å×ÀÌºí¿¡ ´ëÇÑ ¼±¾ð¹®À» »ý¼ºÇÏ·Á¸é ´ÙÀ½ ¸í·ÉÀ» ¹ßÇàÇϽʽÿÀ.
db2dclgn -d sample -t staff -l C
°á°ú staff.h ÆÄÀÏ¿¡´Â ´ÙÀ½ÀÌ Æ÷ÇԵ˴ϴÙ.
struct { short id; struct { short length; char data[9]; } name; short dept; char job[5]; short years; double salary; double comm; } staff;
db2dclgn¿¡¼ ÀÚ¼¼ÇÑ Á¤º¸´Â Command Reference¸¦ ÂüÁ¶ÇϽʽÿÀ.
¾ð¾î | ¿¹Á¦ ¼Ò½º ÄÚµå |
---|---|
C/C++ |
EXEC SQL BEGIN DECLARE SECTION; short dept=38, age=26; double salary; char CH; char name1[9], NAME2[9]; /* C comment */ short nul_ind; EXEC SQL END DECLARE SECTION; |
Java |
// Note that Java host variable declarations follow // normal Java variable declaration rules, and have // no equivalent of a DECLARE SECTION short dept=38, age=26; double salary; char CH; String name1[9], NAME2[9]; /* Java comment */ short nul_ind; |
COBOL |
EXEC SQL BEGIN DECLARE SECTION END-EXEC. 01 age PIC S9(4) COMP-5 VALUE 26. 01 DEPT PIC S9(9) COMP-5 VALUE 38. 01 salary PIC S9(6)V9(3) COMP-3. 01 CH PIC X(1). 01 name1 PIC X(8). 01 NAME2 PIC X(8). * COBOL comment 01 nul-ind PIC S9(4) COMP-5. EXEC SQL END DECLARE SECTION END-EXEC. |
FORTRAN |
EXEC SQL BEGIN DECLARE SECTION integer*2 age /26/ integer*4 dept /38/ real*8 salary character ch character*8 name1,NAME2 C FORTRAN comment integer*2 nul_ind EXEC SQL END DECLARE SECTION |
¾ð¾î | ¿¹Á¦ ¼Ò½º ÄÚµå |
---|---|
C/C++ |
EXEC SQL FETCH C1 INTO :cm; printf( "Commission = %f\n", cm ); |
JAVA (SQLJ) |
#SQL { FETCH :c1 INTO :cm }; System.out.println("Commission = " + cm); |
COBOL |
EXEC SQL FETCH C1 INTO :cm END-EXEC DISPLAY 'Commission = ' cm |
FORTRAN |
EXEC SQL FETCH C1 INTO :cm WRITE(*,*) 'Commission = ', cm |