| PostgreSQL 8.3.3¹®¼ | ||||
|---|---|---|---|---|
| Prev | Fast Backward | Chapter 31. ECPG - C¾ð¾î¿¡ ÀÇÇÑ ¸ÅÀÔSQL | Fast Forward | Next |
¸¹Àº °æ¿ì, ¾îÇø®ÄÉÀ̼ÇÀÌ ½ÇÇàÇØ¾ß ÇÏ´Â SQL¹®Àº, ¾îÇø®ÄÉÀ̼ÇÀÇ ÀÛ¼º ´Ü°è¿¡¼ Á¤ÇØÁý´Ï´Ù. ±×·¯³ª, ÀÌ Áß¿¡¼, SQL¸í·É¹®ÀÌ ½ÇÇà ½Ã ±¸¼ºµÇ°Å³ª ¿ÜºÎ ¼Ò½º·Î Á¦°øµÇ´Â ÀÏÀÌ ÀÖ½À´Ï´Ù. ÀÌ·¯ÇÑ °æ¿ì, SQL¸í·É¹®À» Á÷Á¢ C ¼Ò½º Äڵ忡 ³¢¿ö ³ÖÀ» ¼ö ¾ø½À´Ï´Ù. ±×·¯³ª, ¹®ÀÚ¿ º¯¼ö·Î Á¦°øµÇ´Â ÀÓÀÇÀÇ SQL¸í·É¹®À» È£ÃâÇÒ ¼ö ÀÖ´Â ±â´ÉÀÌ Á¸ÀçÇÕ´Ï´Ù.
ÀÓÀÇÀÇ SQL¸í·É¹®À» ½ÇÇàÇÏ´Â °¡Àå °£´ÜÇÑ ¹æ¹ýÀº, EXECUTE IMMEDIATE¸í·ÉÀ» »ç¿ëÇÏ´Â °ÍÀÔ´Ï´Ù. ÀÌÇÏ¿¡ ¿¹¸¦ ³ªÅ¸³À´Ï´Ù.
EXEC SQL BEGIN DECLARE SECTION; const char *stmt = "CREATE TABLE test1 (...);"; EXEC SQL END DECLARE SECTION; EXEC SQL EXECUTE IMMEDIATE :stmt;
ÀÌ ¹æ¹ý¿¡¼´Â µ¥ÀÌÅ͸¦ °Ë»öÇÏ´Â ¸í·É¹®(¿¹¸¦ µé¸é SELECT)À» ½ÇÇàÇÒ ¼ö ¾ø½À´Ï´Ù.
ÀÓÀÇÀÇ SQL¸í·É¹®À» ½ÇÇàÇÏ´Â °Íº¸´Ù °·ÂÇÑ ¹æ¹ýÀº, ¹Ì¸® ¸í·É¹®µéÀ» ÁغñÇÑ µÚ ½ÇÇàÇÏ°í ½ÍÀ» ¶§ ½ÇÇàÇÏ´Â °ÍÀÔ´Ï´Ù. ¶Ç, ¸í·É¹®À» ÀϹÝÈµÈ ÇüÅ·ΠÁغñÇϰí, ¸Å°³º¯¼ö¸¦ ¿Å°Ü, ƯÁ¤ÀÇ ¸í·É¹®À» ½ÇÇà½Ãų ¼ö ÀÖ½À´Ï´Ù. ¸í·É¹®À» ÁغñÇÒ ¶§, ³ªÁß¿¡ ¸Å°³º¯¼ö·Î¼ ¿Å°Ü³õ°í ½ÍÀº °÷¿¡ ¹°À½Ç¥¸¦ ±âÀçÇØ ÁÖ¼¼¿ä. ÀÌÇÏ¿¡ ¿¹¸¦ ³ªÅ¸³À´Ï´Ù.
EXEC SQL BEGIN DECLARE SECTION; const char *stmt = "INSERT INTO test1 VALUES(?, ?);"; EXEC SQL END DECLARE SECTION; EXEC SQL PREPARE mystmt FROM :stmt; ... EXEC SQL EXECUTE mystmt USING 42, 'foobar';
½ÇÇà½ÃŰ´Â ¸í·É¹®ÀÌ °ªÀ» µ¹·ÁÁÖ´Â °æ¿ì, INTO ±¸¸¦ ºÙ¿© ÁÖ¼¼¿ä.
EXEC SQL BEGIN DECLARE SECTION; const char *stmt = "SELECT a, b, c FROM test1 WHERE a > ?"; int v1, v2; VARCHAR v3; EXEC SQL END DECLARE SECTION; EXEC SQL PREPARE mystmt FROM :stmt; ... EXEC SQL EXECUTE mystmt INTO v1, v2, v3 USING 37;
EXECUTE¸í·ÉÀº INTO±¸, USING±¸, ÀÌ ¾çÂÊ ¸ðµÎ¸¦ °¡Áö°Å³ª, ¾î´À Âʵµ °¡ÁöÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù.
ÁغñµÈ ¹®ÀåÀÌ ÇÊ¿ä¾ø°Ô µÇ¾úÀ» ¶§, ÇÒ´çÀ» ÇØÁ¦ÇØ¾ß ÇÕ´Ï´Ù.
EXEC SQL DEALLOCATE PREPARE name ;