PREPARE

Name

PREPARE -- ½ÇÇàÀ» À§ÇÑ ¸í·É¹®À» ÁغñÇÑ´Ù

Synopsis

PREPARE 
name
 [ (
datatype
 [, ...] ) ] AS 
statement

¼³¸í

PREPARE´Â ÁغñµÈ ¹®ÀåÀ» ÀÛ¼ºÇÕ´Ï´Ù. ÁغñµÈ ¹®ÀåÀº ¼º´ÉÀ» ÃÖÀûÈ­Çϱâ À§Çؼ­ ÀÌ¿ë °¡´ÉÇÑ ¼­¹öÃø ¿ÀºêÁ§Æ®ÀÔ´Ï´Ù. PREPARE¹®À» ½ÇÇàÇÒ ¶§, ÁöÁ¤µÈ ¸í·É¹®Àº ±¸¹® ºÐ¼®, Àç¾²±â¿Í °èȹµÇ¾î Áý´Ï´Ù. ±× ÈÄ,EXECUTE¸í·É¹®Àº À̾ ¹ßÇàµÇ¾úÀ» ¶§´Â, ÁغñµÈ ¹®Àå¿¡ ÇÊ¿äÇÑ Ã³¸®´Â ½ÇÇà¿¡¸¸ µË´Ï´Ù. ¸Å¹ø ¸í·ÉÀÌ ½ÇÇàµÇ´Â ´ë½Å¿¡ ±¸¹® ºÐ¼®, Àç¾²±â, ½ÇÇà °èȹÀÇ ÀÛ¼º ´Ü°è¿¡¼­ ¿ÀÁ÷ Çѹø ¼öÇàµË´Ï´Ù.

ÁغñµÈ ¹®ÀåÀº ¸Å°³º¯¼ö, Áï ¹®ÀåÀÌ ½ÇÇàµÉ ¶§¿¡ ´ëÀԵǴ °ªÀ» ¹ÞÀ» ¼ö°¡ ÀÖ½À´Ï´Ù. ÁغñµÈ ¸í·É¹®À» ÀÛ¼ºÇÒ ¶§¿¡´Â$1À̳ª$2µîÀ» »ç¿ëÇØ, À§Ä¡¿¡ ÀÇÇØ ¸Å°³º¯¼ö¸¦ ÂüÁ¶ÇØ ÁÖ¼¼¿ä. ´ëÀÀÇÏ´Â ÆÄ¶ó¹ÌÅÍÀÇ µ¥ÀÌÅÍÇüÀÇ ¸®½ºÆ®´Â ¼±ÅÃÀûÀ¸·Î ÁöÁ¤ÇÒ ¼öµµ ÀÖ½À´Ï´Ù. ¸Å°³º¯¼öÀÇ µ¥ÀÌÅÍÇüÀÇ ÁöÁ¤ÀÌ ¾ø°Å³ª ¶Ç´Â,unknown¶ó°í ¼±¾ðµÇ°í ÀÖ´Â °æ¿ì, ±× ÇüÅ´ ¸Å°³º¯¼ö°¡ »ç¿ëµÇ´Â ¹®¸Æº¸´Ù(°¡´ÉÇϸé) ÃßÃøµË´Ï´Ù. ¸í·É¹®ÀÇ ½ÇÇà½Ã¿¡´Â EXECUTE¸í·É¹®³»¿¡ ÀÌ·¯ÇÑ ¸Å°³º¯¼öÀÇ ½ÇÁ¦ÀÇ °ªÀ» ÁöÁ¤ÇÕ´Ï´Ù. ÀÚ¼¼ÇÑ °ÍÀº EXECUTE À» ÂüÁ¶ÇØ ÁÖ¼¼¿ä.

ÁغñµÈ ¸í·É¹®Àº ÇöÀçÀÇ µ¥ÀÌÅͺ£À̽º ¼¼¼ÇÀÇ ±â°£Áß¿¡°Ô¸¸ º¸°ü À¯ÁöµË´Ï´Ù. ¼¼¼ÇÀÌ Á¾·áÇϸé ÁغñµÈ ¸í·É¹®Àº ÆÄ±âµË´Ï´Ù. ±× ¶§¹®¿¡, ´Ù½Ã ÀÌ¿ëÇÏ´Â °æ¿ì´Â ÀçÀÛ¼ºÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù. ¶Ç, À̰ÍÀº, 1°³ÀÇ ÁغñµÈ ¹®ÀåÀ» º¹¼öÀÇ µ¥ÀÌÅͺ£À̽º Ŭ¶óÀÌ¾ðÆ®·ÎºÎÅÍ »ç¿ëÇÒ ¼ö ¾ø´Â °ÍÀ» ÀǹÌÇÕ´Ï´Ù. ´Ù¸¸, °¢ Ŭ¶óÀÌ¾ðÆ®°¡ °³º°ÀûÀ¸·Î ÁغñµÈ ¹®ÀåÀ» ÀÛ¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù. ÁغñµÈ ¸í·É¹®À» ¼öÀÛ¾÷À¸·Î »èÁ¦ÇÏ·Á¸é DEALLOCATE ¸í·É¹®À» »ç¿ëÇÕ´Ï´Ù.

ÁغñµÈ ¹®ÀåÀÇ ÀÌÁ¡À» ÃÖ´ëÇÑÀ¸·Î ¹ßÈÖÇÒ ¼ö ÀÖ´Â °ÍÀº, ´ÜÀÏÀÇ ºñ½ÁÇÑ ¸í·É¹®ÀÇ ¸¹ÀÌ ´Ù¼ö ½ÇÇàÇÏ´Â °æ¿ìÀÔ´Ï´Ù. ÆÛÆ÷¸Õ½ºÀÇ Â÷ÀÌ´Â, ¹®ÀåÀÇ °³¼­³ª ½ÇÇà °èȹÀÌ º¹ÀâÇÒ ¸¸Å­ ÇöÀúÇÏ°Ô µÇ°ÚÁö¿ä. ¿¹¸¦ µé¸é, ¸¸¾à ±× Äû¸®¹®Àº ´Ù¼öÀÇ Å×À̺íÀÇ °áÇÕÀÌ Æ÷ÇԵǾî ÀÖ´Â °æ¿ì³ª ¸î¸îÀÇ ·êÀ» Àû¿ëÇØ¾ß ÇÏ´Â ¾ÖÇø®ÄÉÀ̼ÇÀÇ ¿ä±¸¸¦ »ý°¢µË´Ï´Ù. ¸¸¾à ±× ¸í·É¹®Àº »ó´ëÀûÀ¸·Î ½ÇÇà °èȹ°ú Àç¾²±â°¡ ºñ±³Àû ´Ü¼øÇÕ´Ï´Ù. ±×·¯³ª ºñ±³ÀûÀ¸·Î ½ÇÇà ÄÚ½ºÆ®°¡ ºñ½Ò °æ¿ì, ±× ÆÛÆ÷¸Õ½º´Â ÁغñµÈ ¹®ÀåÀÇ È¿°ú´Â ±×¸¸Å­ ³ªÅ¸³ªÁö ¾ÊÀ» °ÍÀÔ´Ï´Ù.

¸Å°³º¯¼ö

name

°³°³ÀÇ ÁغñµÈ ¹®Àå¿¡°Ô ÁÙ ¼ö ÀÖ´Â ÀÓÀÇÀÇ À̸§ÀÔ´Ï´Ù. ÀÌ À̸§Àº 1°³ÀÇ ¼¼¼Ç³»¿¡¼­ À¯ÀÏÇÑ °ÍÀÌ ÀÖ¾î¾ß ÇÕ´Ï´Ù. ÀÌÀüÀÇ ÁغñµÈ ¸í·É¹®ÀÇ ½ÇÇà ¹× »èÁ¦¶§¿¡ ÀÌ À̸§ÀÌ »ç¿ëµË´Ï´Ù.

datatype

ÁغñµÈ ¸í·É¹®¿¡ ´ëÇÑ ¸Å°³º¯¼öÀÇ µ¥ÀÌÅÍÇüÀÔ´Ï´Ù. ƯÁ¤ÀÇ ¸Å°³º¯¼öÀÇ µ¥ÀÌÅÍÇüÀÇ ÁöÁ¤ÀÌ ¾ÈµÇ°Å³ª ¶Ç´Â unknown¿Í ÁöÁ¤µÇ¾úÀ» °æ¿ì, ¸Å°³º¯¼ö°¡ »ç¿ëµÇ´Â ¹®¸ÆÀ¸·ÎºÎÅÍ ÃßÃøµË´Ï´Ù. ÁغñµÈ ¸í·É¹® ¾È¿¡¼­ ÀÌ ¸Å°³º¯¼ö¸¦ ÂüÁ¶ÇÒ ¶§´Â $1,$2µîÀ» »ç¿ëÇÕ´Ï´Ù.

statement

¾î´À SELECT ,INSERT, UPDATE, DELETE, VALUES¸í·É¹® ÀÔ´Ï´Ù.

ÁÖ¼®

»óȲ¿¡ µû¶ó¼­´Â, ÁغñµÈ ¸í·É¹®À¸·Î »ý¼ºµÈ ¹®ÀÇ °èȹÀÌ, º¸ÅëÀ¸·Î ¼Û½ÅµÇ°í ½ÇÇàµÇ¾úÀ» °æ¿ìÀÇ ¹®ÀÇ °èȹº¸´Ù µÚ¶³¾îÁ® ¹ö¸®´Â °æ¿ì°¡ ÀÖ½À´Ï´Ù. À̰ÍÀº ½ÇÇà °èȹÀ» ÀÛ¼ºÇÒ ¶§, planner°¡ ÃÖÀûÀÎ ¸í·É¹®ÀÇ °èȹÀ» ÆÇ´ÜÇϱâ À§Çؼ­ ¹®Àå ¾È¿¡¼­ ÁöÁ¤µÈ ¸Å°³º¯¼öÀÇ ½ÇÁ¦ÀÇ °ªÀ» »ç¿ëÇÒ ¼ö ¾ø´Â °ÍÀÌ ¿øÀÎÀÔ´Ï´Ù. PostgreSQL¿¡¼­´Â Å×ÀÌºí³»ÀÇ µ¥ÀÌÅÍ ºÐÆ÷¿¡ °üÇÑ Åë°è¸¦ ³», ¹®ÁßÀÇ Á¤¼ö¸¦ »ç¿ëÇØ ¹®ÀÇÀÇ ½ÇÇà °á°ú¸¦ ¿¹ÃøÇϰí ÀÖ½À´Ï´Ù. ¸Å°³º¯¼ö¸¦ °¡Áú ÁغñµÈ ¹®ÀåÀÇ ½ÇÇà °èȹÀ» ÀÛ¼ºÇÏ´Â °æ¿ì´Â, ÀÌ·¯ÇÑ µ¥ÀÌÅ͸¦ »ç¿ëÇÒ ¼ö ¾ø±â ¶§¹®¿¡, ¼±ÅÃµÈ °èȹÀÌ ÃÖÀûÀÌÁö ¾ÊÀ» °¡´É¼ºÀÌ ÀÖ½À´Ï´Ù. PostgreSQL°¡ ÁغñµÈ ¸í·É¹®À» À§ÇØ ¼±ÅõǾî Áö¸é EXPLAIN ¸¦ »ç¿ëÇØ ÁÖ¼¼¿ä.

Äõ¸® ½ÇÇà °èȹÀ̰ú PostgreSQL°¡ ¼öÁýÇÏ´Â Åë°è¿¡ °üÇÑ ÀÚ¼¼ÇÑ °ÍÀº ANALYZE ÀÇ ¹®¼­¸¦ ÂüÁ¶ÇØ ÁÖ¼¼¿ä.

pg_prepared_statements ½Ã½ºÅۺ並 Äõ¸®¿¡ ÀÇÇØ ¼¼¼ÇÀ¸·Î ÀÌ¿ë °¡´ÉÇÑ ÁغñµÈ ¹®ÀåÀ» ¸ðµÎ È®ÀÎÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù.

¿¹Á¦

INSERT¸í·É¹®¿¡ ´ëÇØ¼­ ÁغñµÈ ¹®ÀåÀ» ÀÛ¼ºÇØ, ½ÇÇàÇÕ´Ï´Ù.

PREPARE fooplan (int, text, bool, numeric) AS
    INSERT INTO foo VALUES($1, $2, $3, $4);
EXECUTE fooplan(1, 'Hunter Valley', 't', 200.00);

SELECT¹®¿¡ ´ëÇØ¼­ ÁغñµÈ ¹®ÀåÀ» ÀÛ¼ºÇØ, ½ÇÇàÇÕ´Ï´Ù.

PREPARE usrrptplan (int) AS
    SELECT * FROM users u, logs l WHERE u.usrid=$1 AND u.usrid=l.usrid
    AND l.date = $2;
EXECUTE usrrptplan(1, current_date);

Á¦2 ¸Å°³º¯¼öÀÇ µ¥ÀÌÅÍÇüÀÌ ÁöÁ¤µÇ¾î ÀÖÁö ¾ÊÀº °Í¿¡ ÁÖ¸ñÇØ ÁÖ¼¼¿ä. ÀÌ ¶§¹®¿¡$2°¡ »ç¿ëµÇ´Â ¹®¸ÆÀ¸·ÎºÎÅÍ µ¥ÀÌÅÍÇüÀÌ ÃßÃøµË´Ï´Ù.

ȣȯ¼º

Ç¥ÁØ SQL¿¡´ÂPREPARE¸í·É¹®ÀÌ Æ÷ÇԵǾî ÀÖÁö¸¸ ¸ÅÀÔ SQL¿¡¼­ÀÇ »ç¿ë¿¡ ÇÑÁ¤µÇ¾î ÀÖ½À´Ï´Ù. ¶Ç, Ç¥ÁØ SQLÀÇPREPARE¸í·É¹®ÀÇ ¹öÁ¯¿¡´Â ´Ù¼Ò ´Ù¸¥ ±¸¹®ÀÌ »ç¿ëµË´Ï´Ù. syntax.

°ü·Ã Ç׸ñ

DEALLOCATE , EXECUTE