ÀÓº£µðµå °³¹ß ȯ°æ¿¡¼ ÄÚµå »ý¼º±â´Â µ¥ÀÌÅÍ Áß½ÉÀÇ ¼³°è¸¦ À§ÇØ µîÀåÇÑ ½ÇÁúÀûÀÎ ¼Ö·ç¼ÇÀÌ´Ù. ÃÖ±Ù ±¹³»¿¡ ¼Ò°³µÇ±â ½ÃÀÛÇÑ ÀÌ ÄÚµå »ý¼º±â ¹æ½ÄÀº ºü¸¥ Æ®·£Àè¼Ç ¼º´É°ú ÀûÀº ¸Þ¸ð¸® »ç¿ë·®À̶ó´Â ÀÌÁ¡À» Áö³à °¡Àå À¯¿¬ÇÑ ¾ÆÅ°ÅØÃ³ÀÇ Çϳª·Î Æò°¡µÇ°í ÀÖ´Ù. ±× ÀÌÇØ¸¦ µ½±â À§ÇØ ¿£½áÅ©ÀÇ µ¥ÀÌÅÍ ÆÄ¿îµ¥ÀÌ¼Ç ÇÁ·¹ÀÓ¿öÅ©¸¦ ¿¹·Î µé°í ¼Ö·ç¼ÇÀÇ ½ÇÁ¦ÀûÀÎ ¸é¸ð¸¦ ¿³º»´Ù.
¸ð¹ü¿ë ÄÄÇ»ÆÃ ȯ°æ¿¡¼´Â ÀÌ¹Ì 30¿©³â Àü¿¡ µ¥ÀÌÅͺ£À̽º¸¦ Ȱ¿ëÇØ ÀÀ¿ëÇÁ·Î±×·¥°ú ±× ÇÁ·Î±×·¥ÀÌ ½ÇÁ¦ ´Ù·ç´Â µ¥ÀÌÅ͸¦ ºÐ¸®ÇÏ´Â °ÍÀÌ »ý»ê¼º¿¡ ÈξÀ À¯¸®ÇÏ´Ù´Â Á¡À» ÀÔÁõÇß´Ù.
±× ¶§ ÀÌÈÄ·Î ¿À¶óŬ, IBM, »çÀ̺£À̽º µî°ú °°Àº ÇØ¿Ü À¯¼ö¾÷üµé°ú ¾ËƼº£À̽º µîÀÇ ±¹³» ¾÷üµéÀÌ µ¥ÀÌÅͺ£À̽º¸¦ À§ÇÑ´Ù¾çÇÑ ¼Ö·ç¼ÇÀ» ³»³õ°í ÀÖ´Ù. °³¹ßÀÚ ¿ª½Ã ÀýÂ÷Àû ¾ð¾î·Î µ¥ÀÌÅ͸¦ °ü¸®ÇÏ´Â °ÍÀÌ È¿°úÀûÀÌÁö ¾ÊÀ½À» ´ç¿¬ÇÑ Áø¸®Ã³·³ ¿©±â°í ÀÖ´Ù.
ÃÖ±Ù µé¾î µ¥ÀÌÅͺ£À̽º ¾÷üµéÀº ¹ü¿ë ÄÄÇ»ÆÃ ȯ°æ »Ó¸¸ÀÌ ¾Æ´Ï¶ó ÀÓº£µðµå ȯ°æÀ» À§ÇÑ °¢Á¾ µ¥ÀÌÅͺ£À̽º Á¦Ç°±ºµµ ¼Ó¼Ó Ãâ½ÃÇϰí ÀÖ´Ù. ÀÓº£µðµå ½Ã½ºÅÛ ºÐ¾ßÀÇ ¼ÒÇÁÆ®¿þ¾î¿¡¼µµ º¸´Ù ÃÖÀûÈµÈ µ¥ÀÌÅÍ °ü¸®°¡ ÇÊ¿äÇÏ´Ù´Â °ø°¨´ë°¡ Çü¼ºµÈ °ÍÀÌ´Ù.
ÇöÀç µ¥ÀÌÅͺ£À̽º ¾÷üµéÀº Àú¸¶´Ù Ư»ö ÀÖ´Â ¼Ö·ç¼ÇÀ» Á¦½ÃÇϰí ÀÖÁö¸¸, Á¶±Ý ³ÐÀº °üÁ¡¿¡¼ º¸¸é ÀÌµé º¥´õµéÀº ¸ðµÎ ÀüÅëÀûÀÎ µ¥ÀÌÅͺ£À̽º¿¡ ±â¹Ý ÇÑ ¼Ö·ç¼ÇÀ¸·Î ÀÓº£µðµå ¼ÒÇÁÆ®¿þ¾î¸¦ Áö¿øÇÏ´Â °øÅëÁ¡À» ³ªÅ¸³½´Ù. µû¶ó¼ ÇÊÀÚ´Â À̹ø 4ºÎ¸¦ ÅëÇØ Á¶±ÝÀº »õ·Î¿î ½Ã°¢ÀÇ ¼Ö·ç¼ÇÀÎ µ¥ÀÌÅÍ Á᫐ °³¹ß ¹æ¹ý·ÐÀ» ¼Ò°³Çϰí, ±× ´ëÇ¥ÀûÀÎ ¼Ö·ç¼ÇÀ» ¿¹·Î µé°íÀÚ ÇÑ´Ù.
¿£½áÅ©(ENIRQ)ÀÇ µ¥ÀÌÅÍ ÆÄ¿îµ¥ÀÌ¼Ç ÇÁ·¹ÀÓ¿öÅ©(Data Foundation Framework)´Â ÀÎÅÚ¸®ÀüÆ® µð¹ÙÀ̽º¿¡ ÃÖÀûÈµÈ ÃÖÃÊÀÇ µ¥ÀÌÅÍ Á᫐ ¾ÖÇø®ÄÉÀÌ¼Ç °³¹ß ÇÁ·¹ÀÓ¿öÅ©´Ù.
ÀÌ ÇÁ·¹ÀÓ¿öÅ©´Â µ¥ÀÌÅÍ °ü¸® ¼Ö·ç¼Ç °³¹ßÆÀÀ» À§ÇØ ¹Ýº¹¼ºÀÌ ³ôÀº µ¥ÀÌÅÍÁ᫐ ¹æ¹ý·Ð°ú ´Ù¾çÇÑ ¾ÖÇø®ÄÉÀÌ¼Ç ÄÄÆ÷³ÍÆ®, °·ÂÇÑ ÄÚµå »ý¼º¹× ÇÁ·ÎÅäŸÀÌÇÎ µµ±¸, ±×¸®°í °ÅÀÇ ¸ðµç ¿î¿µÃ¼Á¦¿Í CPU Ç÷§Æû¿¡ ÃÖÀûÈµÈ ½ÇÇà ȯ°æÀ» °®Ãá ¼ºñ½º ¶óÀ̺귯¸®¸¦ Á¦°øÇÑ´Ù.
ÀÌ ÇÁ·¹ÀÓ¿öÅ©´Â ¾ÖÇø®ÄÉÀÌ¼Ç °³¹ß °úÁ¤À» 50% ÀÌ»ó ÀÚµ¿ÈÇÏ¿© º¹ÀâÇÑ ¾ÖÇø®ÄÉÀ̼ÇÀ» ±¸ÃàÇÏ´Â µ¥ ÇÊ¿äÇÑ ½Ã°£°ú ºñ¿ëÀ» Å©°Ô ÁÙ¿©ÁØ´Ù. ¿©±â¼´Â ÀÓº£µðµå °³¹ßÀÚµéÀÌ ¿£½áÅ© ÇÁ·¹ÀÓ¿öÅ©¿Í °°Àº µ¥ÀÌÅÍ Á᫐ ¾ÖÇø®ÄÉÀÌ¼Ç °³¹ß ÇÁ·¹ÀÓ¿öÅ©¸¦ ÀÌ¿ëÇØ ´õ È¿°úÀûÀ¸·Î µ¥ÀÌÅÍ °ü¸®¸¦ ±¸ÇöÇÏ´Â ½ÇÁ¦ÀûÀÎ ¹æ¹ýÀ» »ìÆìº»´Ù.
µ¥ÀÌÅÍ Áß½ÉÀÇ »õ ¹æ¹ý·Ð
óÀ½ºÎÅÍ ¸ð¹ÙÀÏ ÇÚµå¼Â, µðÁöÅÐ ¼Òºñ °¡Àü, ÅÚ·¹¸Åƽ½º/ÀÎÆ÷Å×ÀÎ¸ÕÆ® ½Ã½ºÅÛ, ³×Æ®¿öÅ© Àåºñ µî°ú °°ÀÌ ¸®¼Ò½º°¡ Á¦ÇÑµÈ µð¹ÙÀ̽º¸¦ À§ÇØ ¼³°èµÈ ¿£½áÅ© ÇÁ·¹ÀÓ¿öÅ©´Â ¼º´É°ú À¯¿¬¼ºÀ» ¿ì¼±½ÃÇØ ¼³°èµÇ¾î ÀÖ´Ù. À̸¦ »ç¿ëÇÏ¸é µ¥ÀÌÅÍÀÇ ±Þ°ÝÇÑ ¿ë·® Áõ°¡¿¡ È¿°úÀûÀ¸·Î ´ëÀÀ °¡´ÉÇÑ ¾ÖÇø®ÄÉÀ̼ÇÀ» º¸´Ù ½±°í ºü¸£°Ô °³¹ßÇÒ ¼ö ÀÖ´Ù.
ÀÌ ÇÁ·¹ÀÓ¿öÅ©¸¦ ÀÌ¿ëÇÒ °æ¿ì °³¹ßÀÚµéÀÌ ¾ò°Ô µÉ ÀÌÁ¡À» ¿ä¾àÇÏ¸é ´ÙÀ½°ú °°´Ù.
- ¼ÒÇÁÆ®¿þ¾î °³¹ß ½Ã°£°ú ºñ¿ë Àý°¨(ÃÖ´ë 80%)
- ½Ã½ºÅÛ ¸®¼Ò½º »ç¿ëÀ» ÃÖÀûÈÇÏ°í ¸Þ¸ð¸® ¼Òºñ¸¦ Àý°¨(ÃÖ´ë 60%)
- Á¦Ç° ǰÁú ¹× ¼º´É Çâ»ó
- º¯ÈÇÏ´Â ½ÃÀå ¿ä±¸ »çÇ×°ú Çϵå¿þ¾î »ç¾ç¿¡ ½Å¼ÓÇÑ ´ëÀÀ °¡´É
- Á¦Ç° Çõ½Å ¹× Â÷º°È¸¦ À§ÇÑ ¿£Áö´Ï¾î¸µ ´É·Â Çâ»ó
<±×¸² 1>Àº ÇÁ·¹ÀÓ¿öÅ©¸¦ ÀÌ¿ëÇÑ °³¹ß ¹æ¹ý°ú Á¾ÀüÀÇ C ¾ð¾î¿Í °°Àº ÀýÂ÷ÁöÇâÀû ÀÓº£µðµå ¼ÒÇÁÆ®¿þ¾î °³¹ß ¾ð¾î¸¦ ¾´ °æ¿ì¸¦ ºñ±³ÇÑ °á°ú´Ù. ¿ÞÂÊ »ó´ÜÀÇ ±×·¡ÇÁ´Â µ¥ÀÌÅÍ °ü¸®¸¦ À§ÇØ C ¾ð¾î¿Í ¿À¶óŬÀÇ PL/SQL ȣȯ ¾ð¾î(¿£½áÅ© PL)¸¦ °¢°¢ ½á¼ ÄÚµùÇßÀ» ¶§¸¦ ºñ±³ÇÑ °ÍÀÌ´Ù. ºñ±³ ±âÁØÀº °°Àº ÀÀ¿ë ÇÁ·Î±×·¥À» ¸¸µå´Â µ¥ ÇÊ¿äÇÑ ¼Ò½º ÄÚµåÀÇ ¶óÀÎ ¼ö·Î Á¤Çß´Ù. C ¾ð¾î·Î ÀÛ¼ºÇÒ ¶§´Â 4,241 ¶óÀÎÀÌ ÇÊ¿äÇÑ ¹Ý¸é¿¡, PL/SQL ȣȯ ¾ð¾î¸¦ ¾´ °æ¿ì´Â 753 ¶óÀο¡ ºÒ°úÇß´Ù.
 |
| <±×¸² 1> µ¥ÀÌÅÍ Á᫐ °³¹ßÀÇ È¿°ú |
¿À¸¥ÂÊ »ó´ÜÀÇ ±×·¡ÇÁ´Â ÄÚµù ¾çÀÌ ÁÙ¾î °³¹ß »ý»ê¼ºÀÌ ³ô¾ÆÁø ¸¸Å, ½Ã°£°ú ºñ¿ëÀ» Àý°¨ÇÒ ¼ö ÀÖ¾úÀ½À» º¸¿©ÁØ´Ù. ¾Æ¿ï·¯ ÁÂÃøÇÏ´ÜÀÇ ±×·¡ÇÁ´Â °³¹ß ±â°£ µ¿¾È µð¹ö±ë¿¡ ÇÊ¿äÇÑ ³ë·Â°ú ºñ¿ëÀ»ÁÙ¿©ÁØ Á÷Á¢ÀûÀÎ È¿°ú ¿Ü¿¡, Á¦Ç° Ãâ½Ã ÀÌÈÄ¿¡ ¹ß»ýÇÒ ¼ö ÀÖ´Â Ä¡¸íÀûÀÎ ¹ö±×ÀÇ °¡´É¼ºÀ» ÁÙ¿© ǰÁúµµ Çâ»ó½ÃÄ×À½À» ³ªÅ¸³½´Ù.
ºñ·Ï °£Á¢ÀûÀ̱ä ÇÏÁö¸¸, ǰÁú Çâ»óÀ» ÅëÇØ º¸´Ù ¶Ñ·ÇÇÑ ºñ¿ë Àý°¨È¿°ú¸¦ º¼ ¼ö ÀÖ´Â °ÍÀÌ´Ù. ¶ÇÇÑ, µ¥ÀÌÅÍ °ü¸®¿¡ ÃÖÀûÈµÈ ·±Å¸ÀÓ ¶óÀ̺귯¸®¸¦ »ç¿ëÇϰí, ÄÚµå »ý¼º±â·Î ½Ã½ºÅÛÀÇ µ¥ÀÌÅÍ »ç¿ë ÆÐÅÏÀ» ºÐ¼®Çϰí È¿À²ÀûÀÎ Äڵ带 »ý¼ºÇÑ Á¡µµ µ¿ÀÏÇÑ ÀÛ¾÷¿¡ ¼Ò¿äµÈ ½Ã½ºÅÛ ¸Þ¸ð¸®ÀÇ Å©±â¸¦ ÁÙ¿© Á¦Ç° °³¹ß ¿ø°¡¸¦ °¨¼Ò½ÃŲ´Ù.
ÀÌó·³ µ¥ÀÌÅÍ Áß½ÉÀÇ °³¹ß ¹æ¹ý·ÐÀ» Àû¿ëÇÑ °á°ú, °°Àº ÀÛ¾÷À» Çϴµ¥ ÇÊ¿äÇÑ ¿£Áö´Ï¾îÀÇ ¼ö(ÀÎÀû ÀÚ¿ø)°¡ ÁÙ¾îµç´Ù. À̴°𠰳¹ß ¿£Áö´Ï¾î ÀÔÀå¿¡¼ º¼ ¶§ ³²´Â ½Ã°£À» »õ·Î¿î ±â´ÉÀ» °³¹ßÇϰųª ±âÁ¸¿¡ °³¹ßµÈ ±â´ÉÀ» Çâ»ó½ÃŰ´Â µ¥ ÅõÀÚÇÒ ¼ö ÀÖ´Ù´Â Àǹ̰¡ µÈ´Ù.
ÇÁ·¹ÀÓ¿öÅ©¸¦ ÀÌ¿ëÇÑ °³¹ß È帧
µ¥ÀÌÅÍ Áß½ÉÀÇ ¾ÖÇø®ÄÉÀÌ¼Ç °³¹ß ÇÁ·¹ÀÓ¿öÅ©¸¦ ÀÌ¿ëÇÏ¸é µ¥ÀÌÅÍ °ü¸® ÄÄÆ÷³ÍÆ®ÀÇ °³¹ßÀÌ °£´ÜÇØÁø´Ù. <±×¸² 2>°¡ ³ªÅ¸³»´Â ¿£½áÅ© ÇÁ·¹ÀÓ¿öÅ©ÀÇ °³¹ß È帧À» ÅëÇØ ÀÌ ±â¹ýÀÇ ÀüüÀûÀÎ °úÁ¤À» ÀÌÇØÇØº¸ÀÚ.
 |
| <±×¸² 2> ¿£½áÅ© ÇÁ·¹ÀÓ¿öÅ©ÀÇ ±¸¼º |
 | ¾Ø½áÅ© °³¹ß ȯ°æÀ» À§ÇÑ ±¸¼º ¿ä¼Ò |  | |  | |
|
¿£½áÅ© µ¥ÀÌÅÍ ÆÄ¿îµ¥ÀÌ¼Ç ÇÁ·¹ÀÓ¿öÅ©´Â Å©°Ô Development Environment¿Í Platform Environment µÎ °¡Áö ÆÄÆ®·Î ³ª´¶´Ù. ÀÌ °¡¿îµ¥ ¿£½áÅ© Platform Environment´Â ¼ºñ½º ¶óÀ̺귯¸®·Î ±¸¼ºµÈ´Ù.
ÀÌ ¶óÀ̺귯¸®µéÀº µ¥ÀÌÅÍ ¹«°á¼º°ú ¾ÖÇø®ÄÉÀÌ¼Ç Ç°ÁúÀ» Çâ»ó½ÃŰ´Â Ç÷§Æû¿¡ ÃÖÀûÈµÈ ½ÇÇà ȯ°æÀ» Á¦°øÇÑ´Ù.
Platform EnvironmentÀÇ ¸Þ¸ð¸® DzÇÁ¸°Æ®(footprint)´Â »ç¿ëµÇ´ÂCPU, ÄÄÆÄÀÏ·¯, ±â´É µî¿¡ µû¶ó ´Ù¾çÇѵ¥, ´ëºÎºÐÀÇ °æ¿ì ¸Þ¸ð¸® DzÇÁ¸°Æ®´Â 24KB¿¡ ºÒ°úÇÏ´Ù. ¿£½áÅ©ÀÇ ÇÁ·¹ÀÓ¿öÅ©°¡ ¸®¼Ò½º°¡ ¸Å¿ì Á¦ÇѵȽýºÅÛ(ÀϹÝÀûÀ¸·Î ÀÓº£µðµå ½Ã½ºÅÛ)¿¡ ÀûÇÕÇÑ °Íµµ ÀÌ ¶§¹®ÀÌ´Ù.
Platform Environment´Â ƯÁ¤ CPU¿Í ¿î¿µÃ¼Á¦, ±×¸®°í ÄÄÆÄÀÏ·¯ Á¶ÇÕ¿¡ ´ëÇØ ¹Ì¸® ÄÄÆÄÀÏ µÇ¾î ÀÖ´Â ¿ÀºêÁ§Æ® ÄÚµå ¶óÀ̺귯¸® ¼¼Æ®·Î Á¦°øµÈ´Ù. ¿£½áÅ© ÇÁ·¹ÀÓ¿öÅ©ÀÇ ÁÖ¿ä Æ¯Â¡À» Á¤¸®ÇÏ¸é ´ÙÀ½°ú °°´Ù.
- ºü¸¥ ·±Å¸ÀÓ Æ®·£Àè¼Ç ¼º´É
- µ¥ÀÌÅÍ/Å×À̺í Å©±â¿¡ »ó°ü¾øÀÌ ºü¸£°í °áÁ¤ÀûÀÎ Æ®·£Àè¼Ç ¼º´É
- µ¶Á¡Àû API³ª Çʼö ¾ÆÅ°ÅØÃ³ÀÇ ±¸ÇöÀÌ ¾øÀ¸¹Ç·Î Á¾ÀüÀÇ ¾ÖÇø®ÄÉÀ̼ÇÀ̳ª °³¹ß ȯ°æ, ±×¸®°í °³¹ß µµ±¸ µî°ú ½±°Ô ÅëÇÕ °¡´É
- µ¿Àû µ¥ÀÌÅÍ ½ºÆ®¸²ÀÇ Äõ¸®(Query)¿Í °ü¸®¸¦ À§ÇÑ °í±Þ ½ºÆ®¸² ÁöÇâÀû ¾ÆÅ°ÅØÃ³
- RDBMSÀÇ ÀÌÁ¡ Ȱ¿ë °¡´É
- ÀÛÀº ·±Å¸ÀÓ Ç²ÇÁ¸°Æ®(ÀϹÝÀûÀ¸·Î 24KB)
- Å×À̺íÀ» ±â¹ÝÀ¸·Î ÇÏ¿© ¿©·¯ ÀúÀå ¸Åü(Àθ޸ð¸®, µð½ºÅ©, Ç÷¡½Ã ¸Þ¸ð¸®, ³×Æ®¿öÅ© ¿¬°á, I/O ½ºÆ®¸²)¸¦ µ¿½Ã Áö¿ø
| | | | | |
| |
¸ÕÀú ¿£½áÅ© PLÀÇ ÀÎÅÍÆäÀ̽º¸¦ ½á¼ µ¥ÀÌÅ͸¦ Á¤ÀÇÇϰí, µ¥ÀÌÅÍ °ü¸® ·ÎÁ÷À» Ç¥ÇöÇÑ´Ù. À̾î PL ÆÄÀÏÀ» Á¦³Ê·¹ÀÌÅÍ·Î Àü´ÞÇϴµ¥, ÀÌ Á¦³Ê·¹ÀÌÅÍ´Â PLÀÇ ¼Ò½º ÆÄÀÏÀ» ºÐ¼®ÇØ, Æ÷ÆÃ °¡´ÉÇÑANSI C ¼Ò½º ÄÚµå¿Í °ü·Ã Çìµå ÆÄÀÏ ÇüÅ·ΠÃÖÀûÈµÈ ±¸ÇöÀ» »ý¼ºÇÑ´Ù. »ý¼ºµÈ ÆÄÀÏÀº ´Ù¸¥ ½Ã½ºÅÛÀÇ ¼Ò½º ÆÄÀÏ, ¶óÀ̺귯¸®, ¾ÖÇø®ÄÉÀ̼ǿ¡ ÇÊ¿äÇÑ ¿£½áÅ©ÀÇ ¼ºñ½º ¶óÀ̺귯¸® ¼¼Æ®¿Í ÇÔ²² ÄÄÆÄÀÏ ¹× ¸µÅ©µÈ´Ù.
À̶§ »ç¿ëµÇ´Â ºôµå µµ±¸¿Í ¼ºñ½º ¶óÀ̺귯¸®¿¡ µû¶ó »ý¼ºµÇ´Â ¾ÖÇø®ÄÉÀÌ¼Ç ½ÇÇà ÆÄÀÏÀº È£½ºÆ®³ª ´ë»ó ½Ã½ºÅÛ¿¡¼ ±âº»ÀûÀ¸·Î ½ÇÇàµÉ ¼ö ÀÖ´Ù. »ý¼ºµÈ ÆÄÀÏ¿¡´Â ¹Ì¸® Á¤ÀÇµÈ API°¡ ¾ø±â ¶§¹®¿¡ »ç¿ëÀÚ°¡ ÁöÁ¤ÇÑ API¸¦ ½á¼ ±âÁ¸ ¾ÖÇø®ÄÉÀ̼ÇÀ¸·Î ³»º¸³»°Å³ª, ȤÀº ±âÁ¸ ¾ÖÇø®ÄÉÀ̼ǿ¡¼ È£ÃâÇÒ ¼ö ÀÖ´Ù.
¶ÇÇÑ ±âÁ¸ÀÇ C/C++ ÇÔ¼öµµ PL ÇÔ¼ö·Î °¡Á®¿Ã ¼ö ÀÖ´Ù. ÀÌ·¯ÇÑ ±â´ÉÀº ÇÁ·¹ÀÓ¿öÅ©ÀÇ Äڵ带 ±âÁ¸ÀÇ ¾ÖÇø®ÄÉÀ̼ǰú ÅëÇÕÇϰųª, ±âÁ¸Äڵ带 PL ÇÔ¼ö¿¡ ÅëÇÕÇÏ´Â µ¥ À¯¿ëÇÏ´Ù. ±× ±¸¼º ¿ä¼Ò´Â ´ÙÀ½°ú °°´Ù.
¡Ü Á¦³Ê·¹ÀÌÅÍ(Generator)
¿£½áÅ© Á¦³Ê·¹ÀÌÅÍ´Â PL·Î Ç¥ÇöµÈ µ¥ÀÌÅÍ ½ºÅ°¸¶, ÀýÂ÷, ÇÔ¼ö¸¦ ºÐ¼®ÇØ ÃÖÀûÈµÈ ¾ÖÇø®ÄÉÀ̼ÇÀÇ °íÀ¯±¸ÇöÀ» ÀÌ½Ä °¡´ÉÇÑ ANSI C ¼Ò½º ÄÚµå Çü½ÄÀ¸·Î »ý¼ºÇÑ´Ù.
µð¹ÙÀ̽º ¾ÖÇø®ÄÉÀ̼ÇÀÇ µ¥ÀÌÅÍ °ü¸® ºÎºÐÀ» À§ÇØ C ¼Ò½º ÄÚµå »ý¼ºÀ» ÀÚµ¿ÈÇÔÀ¸·Î½á ǰÁúÀ» Çâ»ó½Ã۰í, µ¿½Ã¿¡ ½Ã°£°ú ³ë·Âµµ Àý°¨ÇÑ´Ù. »ý¼ºµÈ ÄÚµå´Â ´Ù¾çÇÑ ´ë»ó Ç÷§Æû¿¡¼ÀÇ ½ÇÇàÀ» À§ÇØ ¼ºñ½º¶óÀ̺귯¸®°¡ Á¦°øÇÏ´Â ·±Å¸ÀÓ ¼ºñ½º¸¦ È£ÃâÇÑ´Ù.
À̸¦ ÅëÇØ »ý¼ºµÈ C ÄÚµå´Â Àϰü¼ºÀ» Áö´Ï°Ô µÇ°í ´ë»ó C/C++ ÄÄÆÄÀÏ·¯·Î ½±°Ô ÃÖÀûÈÇÒ ¼ö ÀÖ´Ù. ¶ÇÇÑ ´Ù¾çÇÑ ´ë»ó Çϵå¿þ¾î Ç÷§Æû°ú ¿î¿µ üÁ¦, °³¹ßȯ°æ ¹× µµ±¸·Î À̽ÄÇϱⰡ ¿ëÀÌÇÏ´Ù.
¡Ü ÇÁ·ÎÅäŸÀÌÆÛ(Prototyper)
ÇÁ·ÎÅäŸÀÌÆÛ´Â PL·Î ÀÛ¼ºµÈ µ¥ÀÌÅÍ °ü¸® ÇÔ¼ö¿Í ¸ðµâÀ» ºü¸£°Ô ºôµå, Å×½ºÆ®, µð¹ö±ëÇϱâ À§ÇÑ ´ëÈ½Ä ÇÁ·ÎÅäŸÀÌÇΠȯ°æÀ» Á¦°øÇÑ´Ù. PL ¸í·É¿¡ ´ëÇÑ ÀÏÁ¾ÀÇ ´ëÈ½Ä ÀÎÅÍÇÁ¸®ÅÍÀÎ ¼ÀÀÌ´Ù. »ç¿ëÀÚ´Â PL ¸í·ÉÀ» ÇÑ ¹ø¿¡ Çϳª¾¿ ÀÔ·ÂÇØ ½ÇÇàÇϰųª ¸í·ÉÆÄÀÏÀ» ·ÎµåÇÒ ¼ö ÀÖ´Ù.
¡Ü ÄÄÆ÷³ÍÆ®(Component)
¿£½áÅ© ÇÁ·¹ÀÓ¿öÅ©¿¡´Â »ç¿ëÀÚ°¡ È®Àå °¡´ÉÇÑ ¾ÖÇø®ÄÉÀ̼ÇÄÄÆ÷³ÍÆ®¿Í ÀÎÅÍÆäÀ̽º ¸ðµâÀÌ Æ÷ÇԵǾî ÀÖ´Ù. ÀÌ·¯ÇÑ ¼Ò½º ÄÚµå ÄÄÆ÷³ÍÆ®´Â ºü¸£°Ô °áÇÕÇϰí È®ÀåÇÒ ¼ö ÀÖ¾î ´Ù¾çÇÑ µð¹ÙÀ̽º ¾ÖÇø®ÄÉÀ̼ǿ¡¼ ¿ä±¸ÇÏ´Â µ¥ÀÌÅÍ °ü¸® ÇÔ¼ö¸¦ °³¹ßÇÏ´Â µ¥ À¯¿ëÇÏ´Ù. ÄÄÆ÷³ÍÆ®´Â <±×¸² 3>°ú °°ÀÌ ¼¼ °³ÀÇ °èÃþÀ¸·Î ³ª´µ´ÂCAF(Common Application Foundation)¸¦ Á¦°øÇϵµ·Ï ±¸¼ºÇÒ ¼ö ÀÖ´Ù.
 |
| <±×¸² 3> 3°³ÀÇ °èÃþÀ¸·Î ³ª´¶ CAF |
¸ÕÀú ¾ÖÇø®ÄÉÀÌ¼Ç °èÃþÀº ¾ÖÇø®ÄÉÀ̼ǰú CAF-API »çÀÌ¿¡ Åë½Å °èÃþÀ» ¸¸µç´Ù. ¾ÖÇø®ÄÉÀÌ¼Ç °èÃþ(ÀϹÝÀûÀ¸·Î Á¦¾î ·ÎÁ÷)Àº Àüü ¾ÖÇø®ÄÉÀ̼ÇÀÇ È帧°ú ´À³¦À» Á¦¾îÇϰí ÀϹÝÀûÀ¸·Î »ç¿ëÀÚ ÀÔ·Â, Ãâ·Â, ºñ µ¥ÀÌÅÍ °ü¸®, ±âº» µ¥ÀÌÅÍ ÀÇ¹Ì ºÎ¿© µîÀ» ¸Ã´Â´Ù. µÎ ¹øÂ°·Î CAF-API °èÃþÀº µ¥ÀÌÅÍ °ü¸® °èÃþ¿¡ ´ëÇÑ ÀçÁøÀÔÀ» Á¦ÇÑÇÏ´Â °ÍÀÌ´Ù.
µ¥ÀÌÅͺ£À̽º ´ë ¿ÀºêÁ§Æ®ÀÇ º¯È¯ À̿ܿ¡µµ ·Î±ë, ÃßÀû, ¿ø°Ý È£Ãâ(RPC)°úÀÇ »óÈ£ ÀÛ¿ë µîÀ» ´ã´çÇÑ´Ù.
¸¶Áö¸·À¸·Î CAF °èÃþÀº °ü°èÇü µ¥ÀÌÅÍ ¸ðµ¨À̳ª ¿©·¯ ¸ðµâÀÇ ºñÁî´Ï½º ·ÎÁ÷°ú °°Àº µ¥ÀÌÅÍ °ü¸® ¿ä±¸¸¦ ó¸®ÇÔ¿¡ ÀÖ¾î¼ ¾ÖÇø®ÄÉÀ̼ǿ¡ ¿ì¼öÇÑ À̽ļºÀ» Á¦°øÇÑ´Ù.
¡Ü ¼ºñ½º ¶óÀ̺귯¸®(Service Libraries)
¼ºñ½º ¶óÀ̺귯¸®(Service Libraries)´Â »ý¼ºµÈ Äڵ带 À§Çѱ⺻ÀûÀÎ ·±Å¸ÀÓ µ¥ÀÌÅÍ °ü¸® ¼ºñ½º¸¦ Á¦°øÇÑ´Ù. ÀÌ ¶óÀ̺귯¸®´Â ¸µÅ© °úÁ¤ µµÁß ÀÚµ¿À¸·Î ¼±ÅÃµÇ¾î »ý¼ºµÈ ÄÚµå¿Í ¸µÅ©µÈ´Ù.
 |
| <±×¸² 4> µð¹ÙÀ̽º ¼ÒÇÁÆ®¿þ¾î ¾ÖÇø®ÄÉÀ̼ÇÀÇ ±¸¼ºµµ |
| |
|
PL/SQL(Oracle¡¹s Procedural Language extension to SQL)ÀºSQLÀÇ È®ÀåµÈ °³³äÀ¸·Î ¿À¶óŬ¿¡¼ Áö¿øÇÏ´Â ÇÁ·Î±×·¡¹Ö ¾ð¾îÀÇ Æ¯¼ºÀ» ¼ö¿ëÇß´Ù. PL/SQL ºí·Ï ³»¿¡¼ SQLÀÇ DML(µ¥ÀÌÅÍ Á¶ÀÛ¾î)¹®°úQuery(°Ë»ö¾î)¹®, ÀýÂ÷Çü ¾ð¾î(if, loop) µîÀ» »ç¿ëÇØ ÀýÂ÷Àû ÇÁ·Î±×·¡¹ÖÀ» °¡´ÉÇÏ°Ô ÇÑ °·ÂÇÑ Æ®·£Àè¼Ç ¾ð¾îÀ̱⵵ ÇÏ´Ù. PL/SQL ¹®Àº ºí·Ï±¸Á¶·Î ÀÌ·ïÁö¸ç PL/SQL ÀÚ½ÅÀÌ ÄÄÆÄÀÏ ¿£ÁøÀ» Æ÷ÇÔÇϰí ÀÖ´Ù.
| | | | | |
| |
¡¸ÀÓº£µðµåÆÇ¡¹PL/SQL
¿£½áÅ© PLÀº ÀÓº£µðµå ¾ÖÇø®ÄÉÀÌ¼Ç ³»ÀÇ µ¥ÀÌÅÍ °ü¸®¸¦ À§ÇØ Æ¯º°ÇÏ°Ô ¼³°èµÈ µµ¸ÞÀÎ °íÀ¯ ¾ð¾îÀÌ´Ù. µ¥ÀÌÅÍ Á᫐ °³¹ßÀÇ»ç½Ç»ó Ç¥ÁØÀ̶ó ÇÒ ¼ö ÀÖ´Â ¿À¶óŬÀÇ PL/SQLÀ» ±â¹ÝÀ¸·Î ÇÏ´Â ¿£½áÅ© PLÀº °³¹ßÀÚ°¡ ÀÓº£µðµå ¾ÖÇø®ÄÉÀ̼ÇÀÇ µ¥ÀÌÅÍ °ü¸® ºÎºÐÀ» ±¸ÃàÇÏ´Â µ¥ À¯¿ëÇÑ ¹æ¹ýÀ» Á¦°øÇÑ´Ù.
ÀÌ ¾ð¾î¸¦ ÇÁ·¹ÀÓ¿öÅ©¿Í ÇÔ²² »ç¿ëÇÏ¸é °³¹ßÀÚ´Â µ¥ÀÌÅÍ °ü¸® ÇÔ¼ö¸¦ C, C++, ȤÀº Java·Î Á÷Á¢ ÄÚµùÇÏ´Â ´ë½Å¿¡ ´õ ³ôÀº ¼öÁØÀÇ Ãß»óȸ¦ ÅëÇØ µ¥ÀÌÅÍ °ü¸® ÇÔ¼ö¿Í ÄÄÆ÷³ÍÆ®¸¦ °³³äÈÇÏ°í ºôµå ÇÒ ¼ö ÀÖ´Ù. À̸¦ ÅëÇØ °³¹ß ½Ã°£°ú ³ë·ÂÀ» ´ÜÃàÇÒ ¼ö ÀÖ´Ù.
| |
|
SPR(Software Productivity Research)ÀÇ ¿¬±¸¿¡ µû¸£¸é, ¾ð¾î´Â Ãß»óÈ ¼öÁØÀÌ ³ôÀ»¼ö·Ï Ç¥Çö·Âµµ ¿ì¼öÇØÁø´Ù. ÀÌ Ç¥Çö·ÂÀº °³¹ßÀÚ »ý»ê¼ºÀ» ÃøÁ¤ÇÏ´Â µ¥ ¸¹ÀÌ »ç¿ëµÇ´Âµ¥, ÇϳªÀÇ ±â´É Æ÷ÀÎÆ®¸¦ ÄÚµùÇÏ´Â µ¥ ÇÊ¿äÇÑ ¹®ÀåÀÇ ¼ö·Î ÃøÁ¤ÇÑ´Ù.
¾ð¾îÀÇ ¼öÁØÀÌ ³ôÀ»¼ö·Ï ÇϳªÀÇ ±â´É Æ÷ÀÎÆ®¸¦ ÀÛ¼ºÇÏ´Â µ¥ ÇÊ¿äÇÑ ¶óÀμö°¡ Àû¾îÁø´Ù. SPR¿¡ µû¸£¸é, ±âº» ¾î¼Àºí¸® ¾ð¾îÀÇ ·¹º§À» 1À̶ó°í ÇßÀ» ¶§, C´Â ÇϳªÀÇ ±â´É Æ÷ÀÎÆ® ±¸¼º¿¡ 128°³ÀÇ ¹®ÀåÀÌ ÇÊ¿äÇÑ ·¹º§2.5ÀÇ ¾ð¾îÀÌ´Ù. ÀÌ Á¤µµ ·¹º§À̶ó¸é C °³¹ßÀÚ´Â 5~10°³ÀÇ ±â´É Æ÷ÀÎÆ®¸¦ ÇÑ ´Þ µ¿¾È ÄÚµù °¡´ÉÇÑ °ÍÀ¸·Î ¿¹»óÇÒ ¼ö ÀÖ´Ù.
ÇÑÆí, PL/SQLÀº ·¹º§ 27ÀÇ ¾ð¾î´Ù. Áï, µ¥ÀÌÅÍ Áß½ÉÀÇ ÀÛ¾÷¿¡¼ C ¾ð¾îº¸´Ù Ç¥Çö·ÂÀÌ ³ôÀ½À» ÀǹÌÇÑ´Ù. ÀϹÝÀûÀ¸·Î ÃÖ°íÀÇ C ÇÁ·Î±×·¡¸Ó¶ó ÇÏ´õ¶óµµ º¹ÀâÇÑ µ¥ÀÌÅÍ ±â´ÉÀ» ÄÚµùÇÏ´Â µ¥´Â Àû¾îµµ 100°³ ÀÌ»óÀÇ ¼Ò½º¹®ÀåÀÌ ÇÊ¿äÇÏ´Ù. ÀÌ¿¡ ºñÇØ PL/SQL ÇÁ·Î±×·¡¸Ó´Â 6°³¸¸ »ç¿ëÇÏ¸é µÈ´Ù.
µû¶ó¼ ÇÑ ´Þ ±âÁØÀ¸·Î C °³¹ßÀÚ´Â 5~10°³ÀÇ ±â´É Æ÷ÀÎÆ®¸¦ ÀÛ¼ºÇÒ ¼ö ÀÖ´Â ¹Ý¸é, PL/SQL °³¹ßÀÚ´Â 30°³ ÀÌ»óÀÇ ±â´É Æ÷ÀÎÆ®¸¦ ÀÛ¼ºÇÒ ¼ö ÀÖ´Ù. ¿£½áÅ© PLÀº ÀÌ PL/SQLÀÇ Ç¥Çö·ÂÀ» ÃÖ´ëÇÑ È°¿ëÇÒ ¼ö ÀÖµµ·Ï Áö¿øÇÑ´Ù.
| | | | | |
| |
¿£½áÅ© PLÀº ºñ±³Àû ¹è¿ì±â ½±°í, Àú¼öÁØ µð¹ÙÀ̽º¿Í µ¥ÀÌÅÍÁ¦¾î¸¦ À§ÇÑ ´Ù¾çÇÑ È®À强À» Áö´Ï°í ÀÖ´Ù. ÀÌ·¯ÇÑ È®À强Àº µ¥ÀÌÅÍ ¼Ò½º¿Í ´ë»óÀÇ Á¦¾î¸¦ ´Ü¼øÈÇϰí, ´Ù¾çÇÑ µ¥ÀÌÅÍ À¯Çü¿¡ ´ëÇÑ Áö¿ø°ú °·ÂÇÑ ¿À·ù ¹× ¿¹¿Ü 󸮸¦ Á¦°øÇÑ´Ù. ÀÌ ¾ð¾î¸¦ ÀÌ¿ëÇÏ¸é °³¹ßÀÚ´Â ´Ù¾çÇÑ ÀúÀå ¸Åü¿Í µð¹ÙÀ̽º Ç÷§Æû¿¡ »ç¿ë °¡´ÉÇÑ Å×À̺í Çü½ÄÀÇ µ¥ÀÌÅÍ¿Í µ¥ÀÌÅÍ ½ºÆ®¸²À» È¿°úÀûÀ¸·Î ÀÛ¼º,Á¶ÀÛ, °ü¸®ÇÏ´Â µ¥ ÇÊ¿äÇÑ ¼¼¹ÐÇÑ Á¦¾î ´É·ÂÀ» È®º¸ÇÒ ¼ö ÀÖ´Ù.
°³¹ßÀÚ´Â Á¾Àü°ú °°Àº µ¥ÀÌÅÍ °ü¸® ÀÎÇÁ¶ó¸¦ ±¸ÃàÇϱâ À§ÇØ Àú¼öÁØÀÇ C/C++ ÄÚµù¿¡ ÁýÁßÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó, ÀÌ »õ·Î¿î ÇÁ·¹ÀÓ¿öÅ©¿Í ¾ð¾î¸¦ ÅëÇØ ½Ã½ºÅÛ ±â´É¿¡ ÁýÁßÇÒ ¼ö ÀÖ´Ù.
¿©±â¼ ÇÑ °¡Áö ¾ÖÇø®ÄÉÀ̼ÇÀ» ¿¹·Î µé¾îº¸ÀÚ. <Ç¥ 1>Àº1970³â ÀÌÀü À¯·´¿¡¼ ¹ß¸ÅµÈ¡¸ºñƲÁÀÇ ³ë·¡ ¸ñ·ÏÀ» °Ë»öÇØÀ̸¦ MP3 Ç÷¹À̾îÀÇ ÇöÀç Àç»ý ¸ñ·Ï¿¡ Ãß°¡ÇÏ´Â ¾ÖÇø®ÄÉÀ̼ÇÀ» ±¸ÇöÇÏ´Â ¿¹ÀÌ´Ù.
ÇÑ ÂÊÀº PL/SQLÀ», ´Ù¸¥ ÇÑ ÂÊÀº ÀüÅëÀûÀÎ C/C++ ÇÁ·Î±×·¡¹ÖÀ» ÀÌ¿ëÇß´Ù. ÀÌ´Â µ¥ÀÌÅÍ Áß½ÉÀÇ °³¹ß ¹æ½ÄÀ» ÀÌ¿ëÇÏ¸é ¼Ò½º Äڵ尡 ÈξÀ °£°áÇÏ°Ô Ç¥ÇöµÊÀ» º¸¿©ÁÖ´Â °ÍÀÌ´Ù. Âü°í·Î ¿£½áÅ© PLÀ» ÀÌ¿ëÇÏ¸é °³¹ßÀÚ´Â ´ÙÀ½ÀÇ ³×°¡Áö »çÇ׿¡ º¸´Ù ´õ ÁýÁßÇÒ ¼ö ÀÖ´Ù.
- Á¶ÀÛÇÒ µ¥ÀÌÅÍÀÇ À̸§, ±¸Á¶ ¹× Çü½Ä- µ¥ÀÌÅÍ¿¡ ´ëÇÑ ¼öÇà ÀÛ¾÷
- µ¥ÀÌÅÍÀÇ ¼Ò½º ¹× ´ë»ó
- PL ÇÔ¼ö·Î °¡Á®¿À°Å³ª, ´Ù¸¥ ¾ÖÇø®ÄÉÀÌ¼Ç ÄÄÆ÷³ÍÆ®(C, C++, Java·Î ÀÛ¼ºµÈ)¿¡¼ »ç¿ëÇϵµ·Ï ³»º¸³¾ ±âÁ¸ C ¾ð¾î Äڵ忡 ´ëÇÑ »ç¿ëÀÚ ÁöÁ¤ ÀÎÅÍÆäÀ̽º
PLÀ» Ȱ¿ëÇÑ ¿¹Á¦ ÇÔ¼ö
| <¸®½ºÆ® 1> ¿£½áÅ© PLÀ» ÀÌ¿ëÇÑ ¿¹Á¦ ÇÔ¼ö | | | |
--******************************************************
-- DB_generateUsage
-- Determines the ratepackages then calculates
the usage for each
-- package.
--******************************************************
CREATE FUNCTION DB_GENERATEUSAGE(currDate IN VARCHAR) RETURN
BOOLEAN
AS
ex_NO_RATE_PACKS_FOUND EXCEPTION;
dMeasure DOUBLE := 0.0;
sOut VARCHAR := ¡®¡®
mEstCharge DOUBLE := 0.0;
CURSOR C3 IS
SELECT es_ratepackage.RP_ID, es_ratepackage.RPStart,
es_ratepackage.RPEnd, es_ratetypes.BaseRate,
es_ratetypes.Baseline, es_ratetypes.Overrate,
es_ratetypes.Transmission
FROM es_ratepackage, es_ratetypes
WHERE es_ratepackage.RateType = es_ratetypes.RateType;
BEGIN
--Clear the table
DELETE FROM es_generatedusage;
--Must turn off AUTOCOMMIT since we have
--a cursor open with other inserts and deletes
AUTOCOMMIT OFF;
FOR rp_rec IN C3 LOOP
--Calculate the sum of the energy for this rate package
SELECT sum(Measure) INTO dMeasure
FROM es_usage
WHERE usedate BETWEEN rp_rec.RPStart AND rp_rec.RPEnd;
--Calculate the estimated charge
IF dMeasure < rp_rec.Baseline THEN
mEstCharge := dMeasure * rp_rec.RPRate;
ELSE
mEstCharge := (rp_rec.Baseline * rp_rec.RPRate) +((dMeasure - rp_rec.Baseline) * rp_rec.Overrate);
END IF;
--Add additional charges (Transmission charges, etc)
mEstCharge := mEstCharge + rp_rec.Transmission;
--Create a generated usage entry for this package
INSERT INTO es_generatedusage
VALUES (glob_ACCOUNT_NUM,
currDate,
rp_rec.RP_ID,
dMeasure,
mEstCharge);
END LOOP;
IF mRP_ID = 0 THEN
RAISE ex_NO_RATE_PACKS_FOUND;
END IF;
COMMIT;
RETURN TRUE;
EXCEPTION
WHEN ex_NO_RATE_PACKS_FOUND THEN
IF C3%ISOPEN THEN
CLOSE C3;
END IF;
IF NOT AUTOCOMMIT THEN
ROLLBACK;
END IF;
sOut := 'DB_generateUsage Error. **NO RATE PACKS FOUND**';
MessageBox(sOut);
RETURN FALSE;
WHEN OTHERS THEN
--Must check if the CURSOR is open
IF C3%ISOPEN THEN
CLOSE C3;
END IF;
IF NOT AUTOCOMMIT THEN
ROLLBACK;
END IF;
sOut := 'DB_generateUsage Error. SQLCODE=' ||
TO_CHAR(SQLCODE);
MessageBox(sOut);
RETURN FALSE;
END;/
| |
 |
<¸®½ºÆ® 1>Àº PLÀÇ ¸î °¡Áö ±â´ÉÀ» ¼³¸íÇϱâ À§ÇÑ ¿¹Á¦ ÇÔ¼öÀÌ´Ù. ÀÌ ÇÔ¼ö´Â ¿¹¿Ü, º¯¼ö, Ä¿¼ µîÀ» ¼±¾ðÇϰí DELETE, INSERT, ¿¹¿Ü, ·çÇÁ, Æ®·£Àè¼ÇÀÇ »ç¿ë¹ýÀ» º¸¿©ÁØ´Ù. ¶ÇÇÑ ¿ÜºÎ ¾ÖÇø®ÄÉÀ̼ǿ¡¼ ÀÌ ÇÔ¼ö¸¦ »ç¿ëÇÏ´Â µ¥ ÇÊ¿äÇÑ ±¸¹®À» ±¸ÇöÇÏ´Â µî °³¹ßÀÚ¿¡°Ô ÇÊ¿äÇÑ ¿©·¯ °¡Áö ÀÛ¾÷µµ ¼öÇàÇÑ´Ù.
<¸®½ºÆ® 1>ÀÇ ¿¹Á¦¸¦ ÅëÇØ ¿£½áÅ© PL ÇÁ·Î±×·¥ Àüü¿¡ »ç¿ëµÇ´Â ±âº» ºí·Ï ±¸Á¶¸¦ ÆÄ¾ÇÇÒ ¼ö ÀÖ´Ù. ±× ±âº»ÀûÀÎ ±¸¼ºÀº ´ÙÀ½°ú °°´Ù.
¡Ü ÇÁ·Î±×·¥ ±¸Á¶
¿£½áÅ© PLÀº ´Ü°èº° ¼¼ºÎ Á¶Á¤ ¹× ¸ðµâ ¹æ½Ä ÇÁ·Î±×·¡¹ÖÀ» Áö¿øÇÏ´Â ºí·Ï ±¸Á¶ ¾ð¾î´Ù. µû¶ó¼ ÇÁ·Î±×·¥Àº ÇÁ·Î½ÃÀú¿Í ³í¸®Àû ÄÚµå ºí·Ï(ÇÔ¼ö ¹× À͸íÀÇ ºí·ÏÀ» À§ÇÑ)À¸·Î ±¸¼ºµÈ´Ù. ºí·Ï °£¿¡´Â ³í¸®Àû È帧ÀÌ Á¸ÀçÇϰí, ³í¸®ÀûÀ¸·Î ¿¬°üµÈ ¼±¾ð°ú ¹®ÀåÀ» ½±°Ô ±×·ìÈ ÇÒ ¼ö ÀÖ´Ù. ºí·Ï ±¸Á¶ ¾ð¾î¿¡¼´Â ÇÏÀ§ ºí·ÏÀ» ½ÇÇàÆÄÀÏÀ̳ª ¾ð¾îÀÇ ¿¹¿Ü ó¸® ºÎºÐ ³»¿¡ Áßø½Ãų ¼ö ÀÖ´Ù.
¡Ü º¯¼ö
º¯¼ö°¡ ±¸Á¶ÈµÈ Äõ¸®³ª ÀýÂ÷Àû ¹®Àå, ȤÀº Ç¥Çö½Ä¿¡¼ ¼±¾ðµÇ°í ÀÌ¿ëµÈ´Ù. ÇÒ´ç ¿¬»êÀÚ¡¸:=¡¹¿Í OUT¹× IN OUT ¸Å°³ º¯¼ö, SELECT INTO(¶Ç´Â FETCH INTO) ¹®À» ½á¼ º¯¼ö¿¡ °ªÀ» ÇÒ´çÇÒ ¼ö ÀÖ´Ù.
¡Ü Ä¿¼
Ä¿¼´Â Å×ÀÌºí¿¡¼ µ¥ÀÌÅ͸¦ °Ë»öÇÏ´ÂSELECT ¹®ÀÇ °á°ú¸¦ ¼øÈ¯ÇÑ´Ù. ¶ÇÇÑ Å×ÀÌºí ³»ÀÇ µ¥ÀÌÅ͸¦ ÂüÁ¶Çϰí ÀÌ µ¥ÀÌÅ͸¦ Á÷Á¢ ¾×¼¼½º ¹× Á¶ÀÛÇÏ´Â µ¥ ÀÌ¿ëµÈ´Ù. CURSOR FOR LOOP´Â ÄÚµùÀ» ´Ü¼øÈÇϸç OPEN, FETCH, CLOSE ¹®À» »ç¿ëÇÒ Çʿ並 ¾ø¾ÖÁØ´Ù. ÀÌ´Â Ä¿¼¸¦ ¿°í °á°ú ¼¼Æ®ÀÇ µ¥ÀÌÅÍ ÇàÀ» ·¹ÄÚµåÀÇ Çʵå·Î ¹Ýº¹ÀûÀ¸·Î FETCH ÇÑ ÈÄ, Çà 󸮰¡ ³¡³ª¸é Ä¿¼¸¦ ´Ý´Â´Ù.
¡Ü ¼Ó¼º
¼Ó¼ºÀº Á¤ÀǸ¦ ¹Ýº¹ÇÏÁö ¾Ê°íµµ Ç׸ñÀÇ ±¸Á¶ ¹× µ¥ÀÌÅÍ Çü½ÄÀ» ÂüÁ¶ÇÒ ¼ö ÀÖµµ·Ï ÇÏ´Â µî·Ï Á¤º¸ÀÌ´Ù. ¹éºÐÀ² ±âÈ£¡¸%¡¹´Â ¼Ó¼ºÇ¥½ÃÀÚ·Î ¼Ó¼º À̸§ ¾Õ¿¡ ¾²ÀδÙ. ¼Ó¼º Çü½ÄÀº º¯¼ö, Å×À̺í, Å×ÀÌºí ¿ ¹× Ä¿¼¿¡ »ç¿ëÇÒ ¼ö ÀÖ´Ù. À§ÀÇ ¿¹Á¦¿¡¼ %ISOPEN ¼Ó¼ºÀº Ä¿¼°¡ ¿·Á ÀÖ´ÂÁö ¿©ºÎ¸¦ ÆÇº°ÇÏ´Â µ¥ ÀÌ¿ëµÇ°í, %NOTFOUND ¼Ó¼ºÀº Ä¿¼°¡ µ¥ÀÌÅ͸¦ ãÁö ¸øÇß´ÂÁö ¿©ºÎ¸¦ ¾Ë·ÁÁØ´Ù.
¡Ü Á¦¾î ±¸Á¶
PL¿¡¼´Â IF-THEN-ELSE, CASE, FOR-LOOP, WHILELOOP, EXIT-WHEN, GOTOÀÇ È帧 Á¦¾î¹®À¸·Î Á¶°Ç, ¹Ýº¹, ¼øÂ÷ Á¦¾î ±¸Á¶¸¦ Á¦°øÇÑ´Ù. Á¶°Ç Á¦¾î ±¸Á¶´Â IF-THEN-ELSE±¸Á¶³ª CASE¸¦ »ç¿ëÇÑ´Ù. ¹Ýº¹ Á¦¾î ±¸Á¶´Â LOOP ¹× ENDLOOP¸¦ »ç¿ëÇØ ¹Ýº¹µÇ¾î¾ß ÇÏ´Â ¹®ÀåÀÇ ½ÃÄö½º¸¦ ÀÛ¼ºÇÑ´Ù.
LOOP ±¸¼ºÀº LOOP, FOR-LOOP ¶Ç´Â WHILE-LOOPÀÏ ¼ö ÀÖ´Ù. ¼øÂ÷ Á¦¾î ±¸Á¶´Â ·¹ÀÌºí ¹× GOTO ¹®À» ½á¼ ÇÁ·Î±×·¥, ÇÁ·Î½ÃÀú, ¶Ç´Â ÇÔ¼öÀÇ º»¹®¿¡¼ ºñÁ¶°Ç ºÐ±â¸¦ °¡´ÉÇÏ°Ô ÇÑ´Ù.
¡Ü ¿À·ù ó¸®
¹Ì¸® Á¤ÀÇµÈ ¿¹¿Ü¿Í »ç¿ëÀÚ Á¤ÀÇµÈ ¿¹¿Ü¸¦ °¨ÁöÇϰí ó¸®ÇÑ´Ù.
·±Å¸ÀÓ ¿À·ù°¡ ¹ß»ýÇÏ¸é ¿¹¿Ü°¡ ¹ß»ýÇϰí, ¿¹¿Ü ó¸® ºí·ÏÀ¸·Î Á¦¾î°¡ ³Ñ¾î°£´Ù. ¿¹¿Ü ºí·ÏÀ» ÅëÇØ °³¹ßÀÚ´Â ¿¹¿Ü¸¦ ó¸®ÇϱâÀ§ÇÑ Äڵ带 ÀÛ¼ºÇÒ ¼ö ÀÖ´Ù. »ç¿ëÀÚ°¡ Á¤ÀÇÇÑ ¿¹¿Ü´Â RAISE ¹®À» »ç¿ëÇÏ¿© ¸í½ÃÀûÀ¸·Î ¹ß»ýµÇ°í, »ç¿ëÀÚ Á¤ÀÇ ¿¹¿Ü 󸮱â´Â ¿¹¿Ü ¹ß»ý ½Ã ÀÌ¿ëÇÒ ½ÇÇ๮À» Á¤ÀÇÇÑ´Ù.
PL°ú C/C++, ±×¸®°í Java
PLÀº C, C++, Java ¾ÖÇø®ÄÉÀ̼ÇÀ» ºñ·ÔÇÑ ´Ù¼öÀÇ »ç¿ëÀÚ°³¹ß ȯ°æ°ú Á¶È¸¦ ÀÌ·ï µ¿ÀÛÇÑ´Ù. ¿øÇÏ´Â ÆíÁý±â¸¦ ÀÌ¿ëÇØ ÇÁ·Î±×·¥À» ÀÛ¼ºÇÒ ¼ö ÀÖ°í, Á¦³Ê·¹ÀÌÅͰ¡ ¼öÁ¤µÈ API³ª µ¶Á¡ÀûAPI ¾øÀ̵µ ÀÌ½Ä °¡´ÉÇÑ ANSI C ¼Ò½º Äڵ带 »ý¼ºÇØÁØ´Ù. µû¶ó¼ PL¿¡¼ ÀÛ¼ºµÈ ÇÔ¼ö¸¦ »ç¿ëÀÚ ÁöÁ¤ API¸¦ ÅëÇØ EXPORT ÇÔ¼ö¸¦ ½á¼ ±âÁ¸ ¾ÖÇø®ÄÉÀ̼ǰú ÀÚ¿¬½º·´°Ô ÅëÇÕÇÒ ¼ö ÀÖ´Ù.
¶ÇÇÑ IMPORT ÇÔ¼ö´Â º¹ÀâÇÑ ¼öÇÐ ¶óÀ̺귯¸®³ª ÇÊÅÍ ÇÔ¼ö¿Í °°Àº ¿ÜºÎÀÇ C ÇÔ¼ö¸¦ È£ÃâÇÒ ¼ö ÀÖÀ¸¹Ç·Î PL ÇÔ¼ö ³»¿¡¼ ±âÁ¸ Äڵ带 ¾î·ÆÁö ¾Ê°Ô Ȱ¿ëÇÒ ¼ö ÀÖ´Ù. ÀÌ·¯ÇÑ À¯¿¬¼ºÀº »ç¿ëÀÚ°¡ ±âÁ¸ÀÇ ¼ÒÇÁÆ®¿þ¾î ÀÎÇÁ¶ó¸¦ ÀÌ¿ëÇÏ´Â µ¥ Å« µµ¿òÀÌ µÈ´Ù.
ÀÌ»óÀ¸·Î ÄÚµå »ý¼º±â¸¦ ÀÌ¿ëÇÏ´Â ÀÓº£µðµå µ¥ÀÌÅÍ °ü¸® ¼Ö·ç¼ÇÀ» »ìÆìºÃ´Ù. ¿¹·Î µç ÇÁ·¹ÀÓ¿öÅ©¿¡¼ »ìÆìº¸¾ÒµíÀÌ, ÀÌ °³¹ß¹æ¹ý·ÐÀº µð¹ÙÀ̽º °³¹ßÀ» À§ÇÑ µ¥ÀÌÅÍ °ü¸®¿ë ¾ð¾î¿Í °³¹ß µµ±¸, ±×¸®°í ÀÀ¿ë ÇÁ·Î±×·¥ÀÌ µ¿ÀÛÇÒ Å¸°Ù ½Ã½ºÅÛ¿¡¼ÀÇ ½ÇÇà±îÁö ¸ðµÎ ¾Æ¿ì¸¦ ¼ö ÀÖ´Ù. @
* ÀÌ ±â»ç´Â ZDNet KoreaÀÇ Á¦ÈÞ¸ÅüÀÎ ¸¶ÀÌÅ©·Î¼ÒÇÁÆ®¿þ¾î¿¡ °ÔÀçµÈ ³»¿ëÀÔ´Ï´Ù.