| PostgreSQL 8.3.3¹®¼ | ||||
|---|---|---|---|---|
| Prev | Fast Backward | Chapter 37. PL/pgSQL - SQL¼ö¼Ó ¾ð¾î | Fast Forward | Next |
PL/pgSQL¹®À¸·Î »ç¿ëµÇ´Â Ç¥Çö½ÄÀº ¸ðµÎ, ¼¹öÀÇ ÁÖSQLÁýÇàÀÚ¸¦ »ç¿ëÇØ 󸮵˴ϴÙ. »ç½Ç»ó, ´ÙÀ½°ú °°Àº Äõ¸®
SELECT expression
´Â SPI°ü¸®ÀÚ¸¦ »ç¿ëÇØ ½ÇÇàµË´Ï´Ù. Æò°¡ Àü¿¡, PL/pgSQLº¯¼ö ½Äº°ÀÚÀÇ »ý¼ºÀÌ ¸Å°³º¯¼ö¿¡ ÀÇÇØ ´ëüµË´Ï´Ù. ±×¸®°í, º¯¼ö·ÎºÎÅÍÀÇ ½ÇÁ¦ °ªÀÌ ¸Å°³º¯¼ö Á¤·Ä¿¡¼ ÁýÇàÀÚ¿¡°Ô °Ç³×Áý´Ï´Ù. SELECT°¡ ´Ü Çѹø ÁغñµÇ°í, ¼ºê½ÃÄöÆ® Æò°¡¿¡ Àç»ç¿ëµÇ±â À§ÇÑ Äõ¸®°èȹÀ» Çã¿ëÇÕ´Ï´Ù.
PostgreSQL ¸ÞÀÎ ÆÄ¼¿¡ ÀÇÇØ ÇàÇØÁø Æò°¡´Â °è¼ÓÀûÀÎ °ªÀÇ ÇØ¼®¿¡ ¿ªÈ¿°ú¸¦ °¡Áý´Ï´Ù. »ó¼¼ÇϰÔ, µÎ ÇÔ¼ö°¡ ÇÏ´Â ÀÏ¿¡´Â Â÷À̰¡ ÀÖ½À´Ï´Ù.
CREATE FUNCTION logfunc1(logtxt text) RETURNS timestamp AS $$
BEGIN
INSERT INTO logtable VALUES (logtxt, 'now');
RETURN 'now';
END;
$$ LANGUAGE plpgsql;
¹×
CREATE FUNCTION logfunc2(logtxt text) RETURNS timestamp AS $$
DECLARE
curtime timestamp;
BEGIN
curtime := 'now';
INSERT INTO logtable VALUES (logtxt, curtime);
RETURN curtime;
END;
$$ LANGUAGE plpgsql;
logfunc1ÀÇ °æ¿ì¿¡´Â, PostgreSQL¸ÞÀÎ ÆÄ¼´Â, INSERT¿ëÀÇ °èȹÀ» ÁغñÇÒ ¶§¿¡,
logtableÀÇ ´ë»ó¿ÀÇ ÇüÅ·κÎÅÍ 'now'¸¦ timestamp¿Í ÇØ¼®ÇØ¾ß ÇÏ´Â °ÍÀ» ÆÄ¾ÇÇϰí ÀÖ½À´Ï´Ù.
ÀÌ·¸°Ô ÇØ, ÆÄ¼´Â INSERT°¡ °èȹµÈ ½ÃÁ¡¿¡¼ 'now'¸¦ Á¤¼ö·Î º¯È¯ÇØ,
±× Á¤¼ö°ªÀ» ±× ÈÄÀÇ ¼¼¼ÇÀÇ À¯È¿±â°£¿¡ ÀÖ¾î¼ÀÇ logfunc1ÀÇ ¸ðµç È£Ãâ·Î »ç¿ëÇÕ´Ï´Ù.
¸»ÇÒ °Íµµ ¾ø½À´Ï´Ù¸¸, À̰ÍÀº ÇÁ·Î±×·¡¸Ó°¡ ÀǵµÇÑ µ¿ÀÛÀÌ ¾Æ´Õ´Ï´Ù.
logfunc2ÀÇ °æ¿ì¿¡¼´Â, PostgreSQL¸ÞÀÎ ÆÄ¼´Â 'now'ÀÇ ÇüŸ¦ °áÁ¤ÇÒ ¼ö°¡ ¾ø½À´Ï´Ù.
±× ¶§¹®¿¡, now¶ó´Â ¹®ÀÚ¿À» °¡Áö´Â textÇüÀÇ µ¥ÀÌÅͰªÀ» µ¹·ÁÁÝ´Ï´Ù.
curtime·ÎÄà º¯¼ö¿¡ ´ëÀÔÇÒ ¶§¿¡, PL/pgSQLinterpreter´Â ÀÌ ¹®ÀÚ¿À»
text_out¿Í timestamp_inÇÔ¼ö¸¦ º¯È¯¿¡ »ç¿ëÇØ timestampÇü¿¡ ij½ºÆ® ÇÕ´Ï´Ù.
±×·¯´Ï±î, ¿¬»êµÈ ŸÀÓ½ºÅÛÇÁ´Â, ÇÁ·Î±×·¡¸Ó°¡ ÀǵµÇÑ ´ë·Î, ½ÇÇàÇÒ ¶§¿¡ °»½ÅµË´Ï´Ù.
·¹ÄÚµå º¯¼öÀÇ º¯Çϱ⠽¬¿î ¼ºÁúÀº ÀÌ Á¢¼Ó¿¡ ´ëÇØ ´Ù¸¥ ¹®Á¦°¡ µË´Ï´Ù. ·¹ÄÚµå º¯¼öÀÇ Çʵ尡 ½ÄÀ̳ª ¹®Àå Áß¿¡¼ »ç¿ëµÇ´Â °æ¿ì, ±× ÇʵåÀÇ µ¥ÀÌÅÍÇüÀ» ÇÔ¼ö¸¦ È£ÃâÇÒ ¶§ º¯°æÇؼ´Â ¾ÈµË´Ï´Ù. °¢°¢ÀÇ ½ÄÀÌ ÃÖÃÊ·Î ½ÇÇàµÇ¾úÀ» ¶§ÀÇ µ¥ÀÌÅÍÇüÀ» »ç¿ëÇØ, ±× ½ÄÀÇ °èȹÀÌ ÀÛ¼ºµÇ±â ¶§¹®ÀÔ´Ï´Ù. ÇÊ¿äÇÑ °æ¿ì EXECUTE¸¦ »ç¿ëÇØ ÀÌ ¹®Á¦¸¦ ȸÇÇÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù.