| PostgreSQL 8.3.3¹®¼ | ||||
|---|---|---|---|---|
| Prev | Fast Backward | Fast Forward | Next | |
DECLARE
name
[ BINARY ] [ INSENSITIVE ] [ [ NO ] SCROLL ]
CURSOR [ { WITH | WITHOUT } HOLD ] FOR
query
[ FOR { READ ONLY | UPDATE [ OF
column
[, ...] ] } ]
DECLARE¸¦ »ç¿ëÇϸé, °Å´ëÇÑ Äõ¸®ÀÇ °á°ú·ÎºÎÅÍ ÇÑ ¹ø¿¡ ¼Ò¼öÀÇ ÇàÀ» ºÒ·¯³»´Â Ä¿¼¸¦ »ç¿ëÇÒ ¼ö ÀÖ°Ô µË´Ï´Ù. Ä¿¼´Â µ¥ÀÌÅ͸¦ FETCH ¸¦ »ç¿ëÇÏ¿© ÅØ½ºÆ® ¶Ç´Â ¹ÙÀ̳ʸ® Çü½ÄÀ¸·Î ¹ÝȯÇÕ´Ï´Ù.
Åë»óÀÇ Ä¿¼´Â,SELECTÀÇ Ãâ·Â°ú °°Àº ÅØ½ºÆ® Çü½Ä¿¡¼ µ¥ÀÌÅ͸¦ ¹ÝȯÇÕ´Ï´Ù. µ¥ÀÌÅͰ¡ ¹ÙÀ̳ʸ® Çü½ÄÀ¸·Î ÀúÀåµÇ±â ¶§¹®¿¡, ½Ã½ºÅÛÀº ÅØ½ºÆ® Çü½ÄÀ» Ãâ·ÂÇϵµ·Ï º¯È¯ÇØ¾ß ÇÕ´Ï´Ù. ÅØ½ºÆ® Çü½ÄÀ¸·Î Á¤º¸°¡ µ¹¾Æ¿À¸é, Ŭ¶óÀÌ¾ðÆ® ¾ÖÇø®ÄÉÀ̼ÇÀº ±×°ÍÀ» ¹ÙÀ̳ʸ® Çü½ÄÀ¸·Î º¯È¯ÇÒ Çʿ䰡 ÀÖ½À´Ï´Ù. °Ô´Ù°¡, ÅØ½ºÆ® Çü½ÄÀÇ µ¥ÀÌÅÍ´Â ¹ÙÀ̳ʸ® Çü½ÄÀÇ µ¥ÀÌÅͺ¸´Ù Á¾Á¾ »çÀÌÁî°¡ ´õ Ŭ ¼ö ÀÖ½À´Ï´Ù. ¹ÙÀ̳ʸ® Ä¿¼´Â, ½±°Ô Á¶ÀÛÇÒ ¼ö ÀÖ´Â ¹ÙÀ̳ʸ® ÇüÅ·ΠÀÖ´Â µ¥ÀÌÅ͸¦ ¹ÝȯÇÕ´Ï´Ù. ±×·³¿¡µµ ºÒ±¸Çϰí, µ¥ÀÌÅ͸¦ ÅØ½ºÆ® Çü½ÄÀ¸·Î Ç¥½ÃÇϰíÀÚ ÇÏ´Â °æ¿ì, ÅØ½ºÆ® Çü½Ä¿¡¼ ÃßÃâÇÑ °ÍÀ» Ŭ¶óÀÌ¾ðÆ® Ãø¿¡ È¿°ú°¡ ÀÖµµ·Ï(ÅØ½ºÆ® Çü½ÄÀ¸·Î Ç¥½Ã µÇµµ·Ï) ÀúÀåÇÕ´Ï´Ù.
ÀÌÀÇ ¿¹·Î, Äõ¸®´Â Á¤¼ö ¿¿¡¼ ÇÑ °³ÀÇ °ªÀ» ¹ÝȯÇÏ´Â °æ¿ì, µðÆúÆ® Ä¿¼¿Í ÇÔ²² 1ÀÇ ¹®ÀÚ¿À» ¹Þ½À´Ï´Ù. ¹Ý¸é¿¡, ¹ÙÀ̳ʸ® Ä¿¼´Â, °ªÀÇ ³»ºÎ Ç¥½ÄÀ» Æ÷ÇÔÇÏ´Â 4-¹ÙÀÌÆ® Çʵ带 ¾ò½À´Ï´Ù. (ºò-¿£µð¾ð ¹ÙÀÌÆ® ¼ø¼·Î)
¹ÙÀ̳ʸ® Ä¿¼´Â ÁÖÀÇÇÏ¿© »ç¿ëÇØ¾ß¸¸ ÇÕ´Ï´Ù. psql¸¦ Æ÷ÇÔÇÑ ¸¹Àº ¾ÖÇø®ÄÉÀ̼ÇÀº, µ¥ÀÌÅÍ´Â ÅØ½ºÆ® Çü½Ä¿¡¼ µ¹·ÁÁÖ¾îÁö´Â °ÍÀ¸·Î °£ÁÖÇϰí ÀÖ¾î ¹ÙÀ̳ʸ® Çü½ÄÀÇ Ä¿¼¸¦ Ãë±ÞÇÒ ¼ö°¡ ¾ø½À´Ï´Ù.
Note: Ŭ¶óÀÌ¾ðÆ® ¾ÖÇø®ÄÉÀ̼ÇÀÌ FETCH Ä¿¸àµå¸¦ ¹ßÇàÇϱâ À§ÇØ "extended query"ÇÁ·ÎÅäÄÝÀ» »ç¿ëÇÒ ½Ã, ¹ÙÀεå ÇÁ·ÎÅäÄÝ ¸Þ½ÃÁö´Â, µ¥ÀÌÅͰ¡ ÅØ½ºÆ® ȤÀº ¹ÙÀ̳ʸ® Çü½ÄÀ¸·Î ÃßÃâµÉ °ÍÀÎÁö¸¦ ÁöÁ¤ÇÕ´Ï´Ù. ÀÌ ¼±ÅÃÀº, Ä¿¼°¡ Á¤ÀǵǴ ¹æ½ÄÀ» ¿À¹ö¶óÀ̵åÇÕ´Ï´Ù. ¸ðµç Ä¿¼¸¦ ÅØ½ºÆ® Çü½Ä ¶Ç´Â ¹ÙÀ̳ʸ® Çü½ÄÀ¸·Î Ãë±ÞÇÒ ¼ö°¡ ÀÖ´Â È®ÀåÀÇ ÇÁ·ÎÅäÄÝ¿¡¼´Â, ¹ÙÀ̳ʸ® Ä¿¼¶ó°í ÇÏ´Â °³³äÀº ±¸½ÄÀÎ °ÍÀÔ´Ï´Ù.
»ý¼ºµÇ´Â Ä¿¼ÀÇ À̸§ÀÔ´Ï´Ù.
µ¥ÀÌÅ͸¦ ¹ÝȯÇÏ´Â Ä¿¼ÀÇ Çü½ÄÀº, ÅØ½ºÆ®°¡ ¾Æ´Ñ, ¹ÙÀ̳ʸ® Çü½ÄÀÌ µË´Ï´Ù.
Ä¿¼·ÎºÎÅÍ ÃßÃâµÈ µ¥ÀÌÅͰ¡, Ä¿¼°¡ Á¸ÀçÇÏ´Â µ¿¾È¿¡´Â ¹èÈÄ¿¡ ÀÖ´Â Å×À̺íÀÇ °»½ÅÀÇ ¿µÇâÀ» ¹ÞÁö ¾Ê´Â °ÍÀ» ³ªÅ¸³À´Ï´Ù. PostgreSQL¿¡ ÀÖ´Â ¸ðµç Ä¿¼´Â ¿µÇâÀ» ¹ÞÁö ¾Ê½À´Ï´Ù. ÀÌ Å°¿öµå´Â ÇöÀç È¿°ú°¡ ¾øÀ¸¸ç, SQL Ç¥ÁذúÀÇ È£È¯¼ºÀ» À§ÇØ Á¸ÀçÇÕ´Ï´Ù.
SCROLL´Â, Ä¿¼°¡ Åë»óÀÇ ¼ø¼ ´ë·Î°¡ ¾Æ´Ñ ¹æ¹ýÀ¸·Î(¿¹¸¦ µé¸é ÈĹæÀ¸·ÎºÎÅÍ) ÇàÀ» ÃßÃâ Çϱâ À§ÇØ »ç¿ëµÉ ¼ö ÀÖ´Ù´Â °ÍÀ» ÁöÁ¤ÇÕ´Ï´Ù. Äõ¸®ÀÇ ½ÇÇà °èȹÀÌ º¹ÀâÇÏ°Ô µÇ¸é,SCROLLÀÇ ÁöÁ¤¿¡ ÀÇÇØ Äõ¸®ÀÇ ½ÇÇà ½Ã°£ÀÌ Áõ´ëÇÒ °¡´É¼ºÀÌ ÀÖ½À´Ï´Ù. NO SCROLL´Â, ¼ø¼ ´ë·Î°¡ ¾Æ´Ñ ¹æ¹ý¿¡¼´Â Ä¿¼°¡ ÇàÀ» ÃßÃâÇÒ ¼ö ¾ø´Ù´Â °ÍÀ» ÁöÁ¤ÇÕ´Ï´Ù. µðÆúÆ®¿¡¼´Â, ¸î °³ÀÇ °æ¿ì·Î ½ºÅ©·Ñ °¡´ÉÇÕ´Ï´Ù. À̰ÍÀºSCROLLÀÇ ÁöÁ¤°ú °°Áö´Â ¾Ê½À´Ï´Ù. ÀÚ¼¼ÇÑ °ÍÀº Notes À» ÂüÁ¶ÇØ ÁÖ¼¼¿ä.
WITH HOLD´Â, Ä¿¼¸¦ »ý¼ºÇÑ Æ®·£Àè¼Ç ÈÄ¿¡µµ °è¼ÓÀûÀ¸·Î Ä¿¼°¡ »ç¿ëµÉ °ÍÀ» ÁöÁ¤ÇÕ´Ï´Ù. WITHOUT HOLD, Ä¿¼¸¦ »ý¼ºÇÑ Æ®·£Àè¼ÇÀÇ ¿ÜºÎ¿¡¼´Â Ä¿¼°¡ »ç¿ëµÉ ¼ö ¾øÀ½À» ÁöÁ¤ÇÕ´Ï´Ù. WITH HOLDµµWITHOUT HOLDµµ ÁöÁ¤µÇÁö ¾Ê´Â °æ¿ì,WITHOUT HOLD°¡ µðÆúÆ®°¡ µË´Ï´Ù.
Ä¿¼¿¡ ÀÇÇØ ¹ÝȯµÇ´Â ÇàÀ» Á¦°øÇÏ´Â SELECT ¶Ç´Â VALUES Ä¿¸àµåÀÔ´Ï´Ù.
FOR READ ONLY´Â Ä¿¼°¡ Àбâ Àü¿ë ¸ðµå¿¡¼ »ç¿ëµÊÀ» ³ªÅ¸³À´Ï´Ù. FOR UPDATE´Â Ä¿¼°¡ Å×À̺íÀ» ¾÷µ¥ÀÌÆ® Çϴµ¥ »ç¿ëµÊÀ» ³ªÅ¸³À´Ï´Ù. Ä¿¼ ¾÷µ¥ÀÌÆ®´Â, ÇöÀç PostgreSQL³»¿¡¼ Áö¿øµÇÁö ¾Ê½À´Ï´Ù. FOR UPDATE¸¦ ÁöÁ¤ÇÏ´Â PostgreSQL´Â, ¿¡·¯¸Þ½ÃÁö¸¦ ¹ß»ýÇϰí, È¿¿ëÀÌ ¾ø´Â FOR READ ONLY¸¦ ÁöÁ¤ÇÕ´Ï´Ù.
Ä¿¼¿¡ ÀÇÇØ ¾÷µ¥ÀÌÆ®µÇ´Â ¿ÀÔ´Ï´Ù. Ä¿¼ ¾÷µ¥ÀÌÆ®°¡ PostgreSQL³»¿¡¼ ÇöÀç Áö¿øµÇÁö ¾Ê±â ¶§¹®¿¡, FOR UPDATEÀýÀÌ ¿¡·¯ ¸Þ¼¼Áö¸¦ È£ÃâÇÕ´Ï´Ù.
Ű¿öµå BINARY, INSENSITIVE, ¹× SCROLL´Â ¼ø¼¿¡ »ó°ü¾øÀÌ ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù.
WITH HOLD°¡ ÁöÁ¤µÇÁö ¾Ê´Â °æ¿ì, ÀÌ Ä¿¸àµå·Î »ý¼ºµÈ Ä¿¼´Â ÇöÀçÀÇ Æ®·£Àè¼Ç ³»¿¡¼¸¸ »ç¿ëµÉ ¼ö ÀÖ½À´Ï´Ù. ±×·¯¹Ç·Î, WITH HOLD°¡ ¾ø´Â DECLARE´Â, Æ®·£Àè¼Ç ºí·Ï ¿ÜºÎ¿¡¼ Àǹ̰¡ ¾ø½À´Ï´Ù: Ä¿¼´Â ¹®ÀåÀÌ ¿Ï·áÇÒ ¶§±îÁö¸¸ À¯È¿ÇÕ´Ï´Ù. ±× ¶§¹®¿¡, PostgreSQL´Â, ÀÌ Ä¿¸àµå°¡ Æ®·£Àè¼Ç ºí·Ï ¿ÜºÎ¿¡¼ »ç¿ëµÈ °æ¿ì ¿¡·¯¸¦ º¸°íÇÕ´Ï´Ù. Æ®·£Àè¼Ç ºí·ÏÀ» Á¤ÀÇÇÏ·Á¸é , BEGIN , COMMIT , ROLLBACK ¸¦ »ç¿ëÇØ ÁÖ¼¼¿ä.
WITH HOLDÀÌ ÁöÁ¤µÇ´Â °æ¿ì ¹× Ä¿¼¸¦ »ý¼ºÇÑ Æ®·£Àè¼ÇÀÌ ¼º°øÀûÀ¸·Î Ä¿¹ÔÇÏ´Â °æ¿ì, µ¿ÀÏ ¼¼¼Ç ³»ÀÇ ´ÙÀ½ Æ®·£Àè¼Ç¿¡¼µµ Ä¿¼¿¡ ¾×¼¼½º ÇÒ ¼ö ÀÖ½À´Ï´Ù. (±×·¯³ª Æ®·£Àè¼Ç »ý¼ºÀÌ ÁߴܵǾúÀ» °æ¿ì, Ä¿¼´Â »èÁ¦µË´Ï´Ù.) WITH HOLD·Î »ý¼ºµÈ Ä¿¼´Â, ¸í½ÃÀûÀÎ CLOSEÄ¿¸àµå°¡ ¹ßÇàµÉ °æ¿ì³ª ¼¼¼ÇÀÌ Á¾·áµÇ¾úÀ» ¶§¿¡ ´ÝÇôÁý´Ï´Ù. ÇöÀçÀÇ ½ÇÇà¿¡¼, À¯ÁöµÈ Ä¿¼¸¦ »ç¿ëÇØ ³ªÅ¸³½ ÇàÀº ´ÙÀ½ÀÇ Æ®·£Àè¼Ç¿¡¼µµ ÀÌ¿ëµÉ ¼ö ÀÖµµ·Ï ÀÓ½ÃÆÄÀÏ ¶Ç´Â ¸Þ¸ð¸® ¿µ¿ª¿¡ º¹»çµË´Ï´Ù.
SCROLL¿É¼ÇÀº, ¿ª¹æÇâÀ¸·Î µ¥ÀÌÅ͸¦ ºÒ·¯¿À±â À§ÇØ »ç¿ëµÇ´Â Ä¿¼¸¦ Á¤ÀÇÇÒ ½Ã¿¡ ÁöÁ¤µÇ¾î¾ß ÇÕ´Ï´Ù. À̰ÍÀº SQL Ç¥ÁØ¿¡ ÀÇÇØ ¿ä±¸µË´Ï´Ù. ±×·¯³ª, ÀÌÀü ¹öÀü°úÀÇ È£È¯¼ºÀ» À§ÇØ, PostgreSQL¿¡¼´Â, Ä¿¼ÀÇ Äõ¸®ÀÇ °èȹÀÌ ´Ü¼øÇϰí, Áö¿øÇÏ´Â µ¥¿¡ ºÒÇÊ¿äÇÑ ¿À¹öÇìµå°¡ ÇÊ¿ä¾ø´Â °æ¿ì, PostgreSQL´Â SCROLLÀ» ÁöÁ¤ÇÏÁö ¾Ê°í ¿ª¹æÇâÀ¸·Î µ¥ÀÌÅ͸¦ ºÒ·¯³¾ ¼ö ÀÖ½À´Ï´Ù. ±×·¯³ª, ¾ÖÇø®ÄÉÀÌ¼Ç °³¹ßÀÚ´Â SCROLL·Î »ý¼ºµÇÁö ¾ÊÀº Ä¿¼¿¡¼, ¿ª¹æÇâÀ¸·Î µ¥ÀÌÅ͸¦ ºÒ·¯³»Áö ¾Êµµ·Ï ±Ç°í¹Þ½À´Ï´Ù. NO SCROLLÀÌ ÁöÁ¤µÈ °æ¿ì¿¡´Â, ¾î¶°ÇÑ °æ¿ì¿¡¼µµ µ¥ÀÌÅ͸¦ ¿ª¹æÇâÀ¸·Î ºÒ·¯³¾ ¼ö ¾ø½À´Ï´Ù.
Ç¥ÁØ SQL¿¡¼´Â, ³»ÀåµÈ SQL¿¡ ÀÖ´Â Ä¿¼¸¸À» ±ÔÁ¤Çϰí ÀÖ½À´Ï´Ù. PostgreSQL¼¹ö´Â Ä¿¼¿ëÀÇOPEN¹®À» ½ÇÇàÇϰí ÀÖ½À´Ï´Ù. Ä¿¼´Â ¼±¾ðµÇ¾úÀ» ¶§¿¡ ¿¸° °ÍÀ¸·Î °£Áֵǰí ÀÖ½À´Ï´Ù. ±×·¯³ª,PostgreSQL¿ëÀÇ ³»ÀåµÈ SQL ÇÁ¸®ÇÁ·Î¼¼¼ÀÎECPG¿¡¼´Â,DECLARE¿ÍOPEN¹®µîÀ» Æ÷ÇÔÇØ Ç¥ÁØ SQLÀÇ Ä¿¼ ±ÔÁ¤À» Áö¿øÇϰí ÀÖ½À´Ï´Ù.
pg_cursors ½Ã½ºÅۺ並 ¹®ÀÇÇÏ´Â °ÍÀ¸·Î, ÀÌ¿ë °¡´ÉÇÑ ¸ðµç Ä¿¼¸¦ È®ÀÎÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù.
Ä¿¼¸¦ ¼±¾ðÇÏ·Á¸é, ¾Æ·¡¿Í °°ÀÌ Çϼ¼¿ä.
DECLARE liahona CURSOR FOR SELECT * FROM films;
Ä¿¼ »ç¿ëÀÇ º¸´Ù ¸¹Àº ¿¹¿¡ ´ëÇØ¼´Â FETCH À» ÂüÁ¶ÇØ ÁÖ¼¼¿ä.