DECLARE

Name

DECLARE -- Ä¿¼­¸¦ Á¤ÀÇÇÑ´Ù

Synopsis

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"ÇÁ·ÎÅäÄÝÀ» »ç¿ëÇÒ ½Ã, ¹ÙÀεå ÇÁ·ÎÅäÄÝ ¸Þ½ÃÁö´Â, µ¥ÀÌÅͰ¡ ÅØ½ºÆ® ȤÀº ¹ÙÀ̳ʸ® Çü½ÄÀ¸·Î ÃßÃâµÉ °ÍÀÎÁö¸¦ ÁöÁ¤ÇÕ´Ï´Ù. ÀÌ ¼±ÅÃÀº, Ä¿¼­°¡ Á¤ÀǵǴ ¹æ½ÄÀ» ¿À¹ö¶óÀ̵åÇÕ´Ï´Ù. ¸ðµç Ä¿¼­¸¦ ÅØ½ºÆ® Çü½Ä ¶Ç´Â ¹ÙÀ̳ʸ® Çü½ÄÀ¸·Î Ãë±ÞÇÒ ¼ö°¡ ÀÖ´Â È®ÀåÀÇ ÇÁ·ÎÅäÄÝ¿¡¼­´Â, ¹ÙÀ̳ʸ® Ä¿¼­¶ó°í ÇÏ´Â °³³äÀº ±¸½ÄÀÎ °ÍÀÔ´Ï´Ù.

¸Å°³º¯¼ö

name

»ý¼ºµÇ´Â Ä¿¼­ÀÇ À̸§ÀÔ´Ï´Ù.

BINARY

µ¥ÀÌÅ͸¦ ¹ÝȯÇÏ´Â Ä¿¼­ÀÇ Çü½ÄÀº, ÅØ½ºÆ®°¡ ¾Æ´Ñ, ¹ÙÀ̳ʸ® Çü½ÄÀÌ µË´Ï´Ù.

INSENSITIVE

Ä¿¼­·ÎºÎÅÍ ÃßÃâµÈ µ¥ÀÌÅͰ¡, Ä¿¼­°¡ Á¸ÀçÇÏ´Â µ¿¾È¿¡´Â ¹èÈÄ¿¡ ÀÖ´Â Å×À̺íÀÇ °»½ÅÀÇ ¿µÇâÀ» ¹ÞÁö ¾Ê´Â °ÍÀ» ³ªÅ¸³À´Ï´Ù. PostgreSQL¿¡ ÀÖ´Â ¸ðµç Ä¿¼­´Â ¿µÇâÀ» ¹ÞÁö ¾Ê½À´Ï´Ù. ÀÌ Å°¿öµå´Â ÇöÀç È¿°ú°¡ ¾øÀ¸¸ç, SQL Ç¥ÁذúÀÇ È£È¯¼ºÀ» À§ÇØ Á¸ÀçÇÕ´Ï´Ù.

SCROLL
NO SCROLL

SCROLL´Â, Ä¿¼­°¡ Åë»óÀÇ ¼ø¼­ ´ë·Î°¡ ¾Æ´Ñ ¹æ¹ýÀ¸·Î(¿¹¸¦ µé¸é ÈĹæÀ¸·ÎºÎÅÍ) ÇàÀ» ÃßÃâ Çϱâ À§ÇØ »ç¿ëµÉ ¼ö ÀÖ´Ù´Â °ÍÀ» ÁöÁ¤ÇÕ´Ï´Ù. Äõ¸®ÀÇ ½ÇÇà °èȹÀÌ º¹ÀâÇÏ°Ô µÇ¸é,SCROLLÀÇ ÁöÁ¤¿¡ ÀÇÇØ Äõ¸®ÀÇ ½ÇÇà ½Ã°£ÀÌ Áõ´ëÇÒ °¡´É¼ºÀÌ ÀÖ½À´Ï´Ù. NO SCROLL´Â, ¼ø¼­ ´ë·Î°¡ ¾Æ´Ñ ¹æ¹ý¿¡¼­´Â Ä¿¼­°¡ ÇàÀ» ÃßÃâÇÒ ¼ö ¾ø´Ù´Â °ÍÀ» ÁöÁ¤ÇÕ´Ï´Ù. µðÆúÆ®¿¡¼­´Â, ¸î °³ÀÇ °æ¿ì·Î ½ºÅ©·Ñ °¡´ÉÇÕ´Ï´Ù. À̰ÍÀºSCROLLÀÇ ÁöÁ¤°ú °°Áö´Â ¾Ê½À´Ï´Ù. ÀÚ¼¼ÇÑ °ÍÀº Notes À» ÂüÁ¶ÇØ ÁÖ¼¼¿ä.

WITH HOLD
WITHOUT HOLD

WITH HOLD´Â, Ä¿¼­¸¦ »ý¼ºÇÑ Æ®·£Àè¼Ç ÈÄ¿¡µµ °è¼ÓÀûÀ¸·Î Ä¿¼­°¡ »ç¿ëµÉ °ÍÀ» ÁöÁ¤ÇÕ´Ï´Ù. WITHOUT HOLD, Ä¿¼­¸¦ »ý¼ºÇÑ Æ®·£Àè¼ÇÀÇ ¿ÜºÎ¿¡¼­´Â Ä¿¼­°¡ »ç¿ëµÉ ¼ö ¾øÀ½À» ÁöÁ¤ÇÕ´Ï´Ù. WITH HOLDµµWITHOUT HOLDµµ ÁöÁ¤µÇÁö ¾Ê´Â °æ¿ì,WITHOUT HOLD°¡ µðÆúÆ®°¡ µË´Ï´Ù.

query

Ä¿¼­¿¡ ÀÇÇØ ¹ÝȯµÇ´Â ÇàÀ» Á¦°øÇÏ´Â SELECT ¶Ç´Â VALUES Ä¿¸àµåÀÔ´Ï´Ù.

FOR READ ONLY
FOR UPDATE

FOR READ ONLY´Â Ä¿¼­°¡ Àбâ Àü¿ë ¸ðµå¿¡¼­ »ç¿ëµÊÀ» ³ªÅ¸³À´Ï´Ù. FOR UPDATE´Â Ä¿¼­°¡ Å×À̺íÀ» ¾÷µ¥ÀÌÆ® Çϴµ¥ »ç¿ëµÊÀ» ³ªÅ¸³À´Ï´Ù. Ä¿¼­ ¾÷µ¥ÀÌÆ®´Â, ÇöÀç PostgreSQL³»¿¡¼­ Áö¿øµÇÁö ¾Ê½À´Ï´Ù. FOR UPDATE¸¦ ÁöÁ¤ÇÏ´Â PostgreSQL´Â, ¿¡·¯¸Þ½ÃÁö¸¦ ¹ß»ýÇϰí, È¿¿ëÀÌ ¾ø´Â FOR READ ONLY¸¦ ÁöÁ¤ÇÕ´Ï´Ù.

column

Ä¿¼­¿¡ ÀÇÇØ ¾÷µ¥ÀÌÆ®µÇ´Â ¿­ÀÔ´Ï´Ù. Ä¿¼­ ¾÷µ¥ÀÌÆ®°¡ PostgreSQL³»¿¡¼­ ÇöÀç Áö¿øµÇÁö ¾Ê±â ¶§¹®¿¡, FOR UPDATEÀýÀÌ ¿¡·¯ ¸Þ¼¼Áö¸¦ È£ÃâÇÕ´Ï´Ù.

Ű¿öµå BINARY, INSENSITIVE, ¹× SCROLL´Â ¼ø¼­¿¡ »ó°ü¾øÀÌ ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù.

Notes

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 À» ÂüÁ¶ÇØ ÁÖ¼¼¿ä.

ȣȯ¼º

SQL Ç¥ÁØ¿¡¼­´Â, ³»ÀåµÈSQL°ú ¸ðµâ ³»¿¡¼­¸¸ Ä¿¼­¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. PostgreSQL´Â ´ëÈ­½ÄÀÇ Ä¿¼­¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.

SQL Ç¥ÁØÀº Å×ÀÌºí µ¥ÀÌÅ͸¦ ¾÷µ¥ÀÌÆ® ÇÏ´Â Ä¿¼­¸¦ Çã¿ëÇÕ´Ï´Ù. ¸ðµç PostgreSQLÄ¿¼­´Â Àбâ Àü¿ëÀÔ´Ï´Ù.

¹ÙÀ̳ʸ® Ä¿¼­´ÂPostgreSQLÀÇ È®ÀåÀÔ´Ï´Ù.

°ü·Ã Ç׸ñ

CLOSE , FETCH , MOVE