16-1.ÀúÀå ÇÁ·Î½ÃÀú

1.Á¤ÀÇ

SQL ¸í·É ¿©·¯ °³¸¦ ¸ðÀ¸¸é º¹ÀâÇÑ ÀÛ¾÷À» ó¸®ÇÒ ¼ö ÀÖ´Â Äڵ尡 µÇ¸ç Äڵ带 ÅؽºÆ® ÆÄÀÏ·Î ÀúÀåÇÑ °ÍÀ» ½ºÅ©¸³Æ®(Script)¶ó°í ÇÑ´Ù. ´Ù½Ã ÀÔ·ÂÇÒ ÇÊ¿ä ¾øÀÌ ¾ðÁ¦µç ºÒ·¯¿Í Àç»ç¿ëÇÒ ¼ö ÀÖÁö¸¸ ¸Å¹ø Äõ¸®Ã¢¿¡ ºÙ¿© ³Ö¾î¾ß ÇÏ´Â ºÒÆíÇÔÀÌ ÀÖ´Ù. ¶ÇÇÑ Çü½Ä¼ºÀÌ ¾ø¾î »ç¿ëÇÒ ¶§¸¶´Ù ¿ëµµ¿¡ ¸Â°Ô ¾à°£¾¿ ÆíÁýÇØ¾ß ÇÏ¸ç º°µµÀÇ ÆÄÀÏÀ̾ °ü¸®ÀÇ ºÎ´ãµµ ÀÖ´Ù.

½ºÅ©¸³Æ®¸¦ ¾Æ¿¹ ¼­¹ö¿¡ ÀúÀåÇØ ³õÀº °ÍÀÌ ¹Ù·Î ÀúÀå ÇÁ·Î½ÃÀú(Stored Procedure)ÀÌ´Ù. ¼³¸íÀûÀÎ À̸§À» ºÙÀÏ ¼ö ÀÖ°í ¾ðÁ¦µç È£ÃâÇÒ ¼ö ÀÖÀ¸¸ç Àμö¸¦ ÅëÇØ ÀÛ¾÷°Å¸®¸¦ Àü´ÞÇÒ ¼ö ÀÖ¾î ÆíÀǼºÀÌ ³ô´Ù. °ÅâÇÏ°Ô »ý°¢ÇÒ °Å ¾øÀÌ Æ¯Á¤ ÀÛ¾÷À» ÇÏ´Â °ü·Ã ¸í·ÉÀ» ±ÔÄ¢¿¡ ¸Â°Ô ÀÛ¼ºÇÏ¿© ÀúÀåÇØ ³õÀº °ÍÀ̶ó°í »ý°¢ÇÏ¸é µÈ´Ù.

ƯÁ¤ ±â´ÉÀ» Àü´ãÇÏ´Â ¼­ºê·çƾ(Subroutine)À̸ç Àß Á¤¸®ÇØ µÎ¸é ÇÊ¿äÇÒ ¶§¸¶´Ù È£ÃâÇÒ ¼ö ÀÖ¾î Æí¸®ÇÏ´Ù. ¼­¹ö¿¡ DB ¿ÀºêÁ§Æ®·Î ¿µ±¸ ÀúÀåÇÔÀ» °­Á¶Çϱâ À§ÇØ ÀúÀå ÇÁ·Î½ÃÀú¶ó°í Çϴµ¥ °£·«È÷ ÁÙ¿© ÇÁ·Î½ÃÀú¶ó°í ºÎ¸¥´Ù. ´ÙÀ½ Çü½ÄÀ¸·Î Á¤ÀÇÇÑ´Ù.

 

CREATE [OR REPLACE] PROCEDURE À̸§(Àμö ¸ñ·Ï)

AS ¶Ç´Â IS

º¯¼ö¼±¾ð

BEGIN

º»Ã¼

END [À̸§];

 

¸ðµç DB ¿ÀºêÁ§Æ®´Â °íÀ¯ÇÑ À̸§À» °¡Á®¾ß ÇÑ´Ù. µ¿ÀÛÀ» Àß ¼³¸íÇÏ´Â Á÷°üÀûÀÎ À̸§À» ºÙÀÌµÇ ÁÖ·Î Get, Calc, Update °°Àº µ¿»ç·Î À̸§À» ºÙÀδÙ. ÇÁ·Î½ÃÀú³¢¸®´Â ¹°·ÐÀÌ°í ´Ù¸¥ ŸÀÔÀÇ ¿ÀºêÁ§Æ®¿Íµµ À̸§ÀÌ Áߺ¹µÇ¸é ¾ÈµÈ´Ù. DB ¿ÀºêÁ§Æ®³¢¸® ±¸ºÐÇϱâ À§ÇØ Á¾·ùº°·Î Á¢µÎ¸¦ ºÙÀ̴µ¥ ÇÁ·Î½ÃÀú´Â ÁÖ·Î SP_ Á¢µÎ¸¦ ºÙÀδÙ.

Á¤Àǹ® Á¦ÀÏ ¸¶Áö¸·ÀÇ END¿¡µµ ÇÁ·Î½ÃÀú À̸§À» Àû¾îµÑ ¼ö ÀÖ´Ù. ±â´ÉÀûÀÎ Àǹ̴ ¾øÁö¸¸ ¿©·¯ ÇÁ·Î½ÃÀú Á¤Àǹ®ÀÌ À̾îÁú ¶§ Á¤Àǹ®ÀÇ ³¡ÀÓÀ» ºÐ¸íÈ÷ Ç¥½ÃÇÒ ¼ö ÀÖ¾î ¹®¼­È­¿¡ µµ¿òÀÌ µÈ´Ù.  À̸§ ´ÙÀ½ÀÇ °ýÈ£ ¾È¿¡ ÀÛ¾÷ÇÒ »çÇ×À» Àü´ÞÇÏ´Â Àμö ¸ñ·ÏÀ» Àû´Âµ¥ ¾øÀ¸¸é »ý·«ÇÑ´Ù.

ÇÁ·Î½ÃÀúÀÇ Çì´õ ´ÙÀ½¿¡ AS Å°¿öµå¸¦ ¾²°í º»Ã¼ Äڵ带 ±â¼úÇÑ´Ù. º»Ã¼¿¡ ¾Õ Àå¿¡¼­ ¹è¿î ¹Ù´ë·Î º¯¼ö¸¦ ¼±¾ðÇÏ°í Äõ¸®¹®°ú Á¦¾î¹®À» ÀÛ¼ºÇÑ´Ù. AS´Â IS·Î ½áµµ µÇÁö¸¸ ȣȯ¼ºÀ» °í·ÁÇÏ¿© AS·Î¸¸ ¾²´Â °ÍÀÌ ¹Ù¶÷Á÷ÇÏ´Ù. ¼­¿ïÀÇ Àα¸¼ö¸¦ Á¶»çÇÏ¿© Ãâ·ÂÇÏ´Â °£´ÜÇÑ ÇÁ·Î½ÃÀú¸¦ ÀÛ¼ºÇØ º¸ÀÚ.

 

CREATE PROCEDURE SP_GetPopu

AS

    v_popu INT;

BEGIN

    SELECT popu INTO v_popu FROM tCity WHERE name = '¼­¿ï';

    DBMS_OUTPUT.PUT_LINE(v_popu);

END;

 

Äõ¸®Ã¢¿¡¼­ ¸í·É Çϳª¸¦ ½ÇÇàÇÒ ¶§ º¸Åë Ctrl+Enter¸¦ ´©¸£Áö¸¸ ÇÁ·Î½ÃÀú Á¤Àǹ®Àº ³»ºÎ¿¡ ¼ö¸¹Àº Äڵ尡 Æ÷ÇԵǾî ÀÖ¾î ÀÌ ¹æ½ÄÀ¸·Î ½ÇÇàÇؼ­´Â ¾ÈµÈ´Ù. Ä¿¼­ À§Ä¡ÀÇ ¸í·É Çϳª¸¦ ½ÇÇàÇ϶ó´Â °ÍÀÎÁö, ÇÁ·Î½ÃÀú Á¤Àǹ® Àüü¸¦ ½ÇÇàÇ϶ó´Â °ÍÀÎÁö ¾Ö¸ÅÇÏ´Ù. ÇÁ·Î½ÃÀú Á¤Àǹ® Àüü¸¦ ºí·ÏÀ¸·Î °¨½Ñ ÈÄ ½ÇÇàÇÏ´Â °ÍÀÌ ¾ÈÀüÇÏ´Ù.

ºí·ÏÀ» °¨½ÎÁö ¾ÊÀ¸¸é Äõ¸®Ã¢¿¡ ÀԷµǾî ÀÖ´Â ´Ù¸¥ ¸í·É±îÁö °°ÀÌ ½ÇÇàÇØ ¹ö·Á À§ÇèÇÏ´Ù. ÇÁ·Î½ÃÀú Á¤Àǹ®Àº ¾Æ¿¹ º°µµÀÇ Äõ¸®Ã¢¿¡¼­ µû·Î ½ÇÇàÇÏ´Â °ÍÀÌ Á¦ÀÏ ¾ÈÀüÇÏ´Ù. ÇÁ·Î½ÃÀú¸¦ ¹«»çÈ÷ Á¤ÀÇÇßÀ¸¸é ´ÙÀ½ ¸Þ½ÃÁö¸¦ Ãâ·ÂÇÑ´Ù.

 

Procedure SP_GETPOPUÀÌ(°¡) ÄÄÆÄÀϵǾú½À´Ï´Ù.

 

Äڵ带 Çؼ®ÇÏ´Â °úÁ¤À» ÄÄÆÄÀÏÀ̶ó°í Çϸç À§ ¸Þ½ÃÁö´Â Çؼ® °á°ú¸¦ ¼­¹ö¿¡ ÀúÀåÇÏ¿© ¾ðÁ¦µçÁö ½ÇÇàÇÒ Áغñ¸¦ ¿Ï·áÇß´Ù´Â ¶æÀÌ´Ù. ÇÁ·Î½ÃÀú¸¦ ½ÇÇàÇÒ ¶§´Â EXECUTE ¸í·ÉÀ» »ç¿ëÇÑ´Ù. ÇÁ·Î½ÃÀú Á¤Àǹ®°ú °°Àº Äõ¸®Ã¢¿¡¼­ ½ÇÇàÇÒ ¶§´Â ºí·ÏÀ» °¨½Ñ ÈÄ ½ÇÇàÇÏ´Â °ÍÀÌ ¾ÈÀüÇÏ´Ù.

 

EXECUTE SP_GetPopu();

 

EXECUTE¸¦ EXEC·Î ÁÙ¿© Ç¥±âÇÒ ¼ö ÀÖÁö¸¸ »ý·«ÇÒ ¼ö´Â ¾ø´Ù. CALL ¸í·ÉÀ¸·Îµµ È£ÃâÇÒ ¼ö Àִµ¥ ÀÌ µÑÀº ³»ºÎ ½ÇÇà °úÁ¤ÀÌ ¾à°£ ´Ù¸£´Ù. Àμö°¡ ¾ø´Â ÇÁ·Î½ÃÀú´Â °ýÈ£¸¦ »ý·«ÇÒ ¼ö ÀÖÁö¸¸ ÇÁ·Î½ÃÀúÀÓÀ» ºÐ¸íÈ÷ Ç¥½ÃÇϱâ À§ÇØ ÀÏ°üµÇ°Ô °ýÈ£¸¦ ¾²´Â °ÍÀÌ ÁÁ´Ù. ½ºÅ©¸³Æ® Ãâ·Ââ¿¡ ÇÁ·Î½ÃÀú ½ÇÇà °á°ú°¡ ³ªÅ¸³ª¸ç ¼­¿ïÀÇ Àα¸¼ö¸¦ Ãâ·ÂÇÑ´Ù.

¸¸¾à 974°¡ ³ªÅ¸³ªÁö ¾ÊÀ¸¸é SET SERVEROUTPUT ON; ¸í·ÉÀ» ½ÇÇàÇÏÁö ¾Ê¾Æ¼­ÀÌ´Ù. ÇÁ·Î½ÃÀú´Â »ç¿ëÀÚ°¡ Á÷Á¢ ¾²´Â °ÍÀÌ ¾Æ´Ï¾î¼­ SELECT ¹®À¸·Î Å×À̺íÀ» ´ýÇÁÇÒ ¼ö ¾ø°í °ªÀ» Çϳª¾¿ Àоî Ãâ·ÂÇϰųª ´Ù¸¥ Å×À̺í·Î º¹»çÇÏ´Â °ÍÀÌ ¿øÄ¢ÀÌ´Ù.

ÇнÀ ÁßÀ̳ª °³¹ß Áß¿¡´Â ³Ê¹« ¹ø°Å·Ó±â ¶§¹®¿¡ PUT_LINE ¸Þ¼­µå·Î °á°ú¸¦ È®ÀÎÇÏ´Â °£ÆíÇÑ ¹æ¹ýÀ» »ç¿ëÇÑ´Ù. ÀÌÈÄÀÇ ½Ç½À¿¡¼­µµ ¼­¹ö Ãâ·ÂÀ» ÄÑ ³ù´ÂÁö ¼ö½Ã·Î È®ÀÎÇØ º¸ÀÚ. ÇÁ·Î½ÃÀú¸¦ »ý¼ºÇϸé SQL Developer Á¢¼ÓâÀÇ ÇÁ·Î½ÃÀú ³ëµå¿¡ µî·ÏµÈ´Ù. ÀÌ ³ëµå¸¦ Ŭ¸¯Çϸé ÇÁ·Î½ÃÀú Äڵ尡 º¸ÀδÙ.

»ý¼º Á÷ÈÄ¿¡´Â º¸ÀÌÁö ¾ÊÀ» ¼öµµ Àִµ¥ Æ˾÷ ¸Þ´º¿¡¼­ »õ·Î°íħÀ» ¼±ÅÃÇÏ¸é º¸ÀδÙ. ÇÁ·Î½ÃÀú°¡ ¼­¹ö¿¡ Àß ÀúÀåµÇ¾î ÀÖÀ½À» ¾Ë ¼ö ÀÖ´Ù. Äõ¸®¸¦ ÅëÇؼ­µµ ÇÁ·Î½ÃÀúÀÇ Á¸Àç¿Í Äڵ带 È®ÀÎÇÒ ¼ö ÀÖ´Ù. user_objects Å×À̺íÀº »ç¿ëÀÚ°¡ »ý¼ºÇÑ ¸ðµç DB ¿ÀºêÁ§Æ®¸¦ ÀúÀåÇÑ´Ù.

 

SELECT * FROM user_objects WHERE object_type = 'PROCEDURE';

»ý¼º ³¯Â¥, ÇöÀç »óÅ µîÀÇ »ó¼¼ÇÑ Á¤º¸¸¦ º¼ ¼ö ÀÖ´Ù. ÇÁ·Î½ÃÀúÀÇ ³»¿ëÀº user_source Å×ÀÌºí¿¡ ÀúÀåÇÏ¸ç ¿ª½Ã Äõ¸®·Î È®ÀÎÇÑ´Ù. DBMS´ä°Ô ¸ðµç °ÍÀ» µ¥ÀÌÅͺ£À̽º¿¡ ÀúÀåÇÑ´Ù.

 

SELECT * FROM user_source WHERE name = 'SP_GETPOPU';

±×·¡ÇÈ Åø·Îµµ º¼ ¼ö ÀÖ¾î ±»ÀÌ Äõ¸®¸¦ ¾µ ÇÊ¿ä´Â ¾øÁö¸¸ ¶§·Î´Â Äõ¸®Ã¢¿¡¼­ ¹Ù·Î È®ÀÎÇÏ´Â °ÍÀÌ ´õ °£ÆíÇÒ ¶§µµ ÀÖ´Ù.

2.¼öÁ¤

ÇÁ·Î½ÃÀúÀÇ ÄÚµå´Â Àû¾îµµ ¼ö½ÊÁÙ, ±æ¸é ¼ö¹éÁÙÀÌ ³Ñ´Â´Ù. ÀÌ·¸°Ô º¹ÀâÇÑ Äڵ带 ÇÑ ¹ø¿¡ ¿Ï¼ºÇϱâ´Â ¾î·Á¿ö ¼ö½Ã·Î ¼öÁ¤Çϸç Å×½ºÆ®¸¦ ¹Ýº¹ÇØ¾ß ÇÑ´Ù. ¾ðÁ¦µçÁö ÇÁ·Î½ÃÀúÀÇ ³»¿ëÀ» ¼öÁ¤ÇÒ ¼ö ÀÖÁö¸¸ ÀÌ¹Ì ÀÖ´Â ÇÁ·Î½ÃÀú¸¦ ¶Ç ¸¸µé ¼ö´Â ¾ø´Ù. ¿¹¸¦ µé¾î SP_GetPopu¸¦ ¼öÁ¤ÇÏ¿© ¼­¿ïÀÌ ¾Æ´Ñ ºÎ»êÀÇ Àα¸¼ö¸¦ Á¶»çÇÑ´Ù°í ÇØ º¸ÀÚ.

 

CREATE PROCEDURE SP_GetPopu

...

    SELECT popu INTO v_popu FROM tCity WHERE name = 'ºÎ»ê';

 

SP_GetPopu°¡ ÀÌ¹Ì Àִµ¥ °°Àº À̸§À¸·Î ¶Ç ¸¸µé¸é ´ç¿¬È÷ ¿¡·¯ÀÌ´Ù. ±âÁ¸ °´Ã¼¸¦ ¸ÕÀú »èÁ¦ÇØ¾ß »õ·Î ¸¸µé ¼ö ÀÖ´Ù. ÇÁ·Î½ÃÀú¸¦ »èÁ¦ÇÒ ¶§´Â ´ÙÀ½ ¸í·ÉÀ» »ç¿ëÇÑ´Ù.

 

DROP PROCEDURE SP_GetPopu;

 

±âÁ¸ °´Ã¼¸¦ Áö¿üÀ¸´Ï ÀÌÁ¦ »õ·Î ¸¸µé¸é µÈ´Ù. Áö¿ì°í »õ·Î ¸¸µå´Â °ÍÀº ¾ðÁ¦³ª °¡´ÉÇÏ¸ç »ó½ÄÀûÀÌÁö¸¸ ¼öÁ¤À» À§ÇØ ÀÏÀÏÀÌ Áö¿ì°í ¸¸µå´Â °ÍÀº ¹ø°Å·Ó´Ù. ±×·¡¼­ ¸¸µé ¶§ºÎÅÍ ¾Æ¿¹ ¼öÁ¤±îÁö °¡´ÉÇϵµ·Ï CREATE µÚ¿¡ OR REPLACE ¸í·ÉÀ» ºÙ¿© µÎ¸é Æí¸®ÇÏ´Ù.

 

CREATE OR REPLACE PROCEDURE SP_GetPopu

AS

    v_popu INT;

BEGIN

    SELECT popu INTO v_popu FROM tCity WHERE name = 'ºÎ»ê';

    DBMS_OUTPUT.PUT_LINE(v_popu);

END;

 

CREATE OR REPLACE ¸í·ÉÀº ¾øÀ¸¸é ¸¸µé°í ÀÖÀ¸¸é ´ëüÇÏ´Â ½ÄÀ̶ó ±âÁ¸ °´Ã¼°¡ Àְųª ¾ø°Å³ª Ç×»ó ¼º°øÇÑ´Ù. óÀ½ ¸¸µé ¶§ºÎÅÍ ¼öÁ¤ÇÒ °ÍÀ» °í·ÁÇÏ¿© ÀÌ Çü½ÄÀ¸·Î Á¤ÀÇÇÏ´Â °ÍÀÌ Æí¸®ÇÏ´Ù. ÀÌ ¸í·ÉÀÌ »ý¼º ¹× ¼öÁ¤À» °âÇϹǷΠALTER PROCEDURE ¸í·ÉÀº µû·Î ¾ø´Ù.

¼öÁ¤ ÈÄ ´Ù½Ã ½ÇÇàÇØ º¸¸é ºÎ»êÀÇ Àα¸ÀÎ 342¸¦ Ãâ·ÂÇÑ´Ù. ±æ°í º¹ÀâÇÑ ÇÁ·Î½ÃÀú¸¦ ÆíÁýÇÏ´Ù º¸¸é ½Ç¼öÇÒ °¡´É¼ºÀÌ ÀÖ´Ù. ÀϺη¯ ¿ÀŸ¸¦ ³» º¸°í ¿¡·¯¿¡ ´ëóÇÏ´Â ½Ç½ÀÀ» ÇØ º¸ÀÚ.

 

CREATE OR REPLACE PROCEDURE SP_GetPopu

AS

    v_popu INT;

BEGIN

    SELECT population INTO v_popu FROM tCity WHERE name = 'ºÎ»ê';

    DBMS_OUTPUT.PUT_LINE(v_popu);

END;

 

popu Çʵ带 populationÀ¸·Î À߸ø Àû¾ú´Ù. ÀÌ »óÅ¿¡¼­ ÇÁ·Î½ÃÀú µî·Ï¹®À» ½ÇÇàÇÏ¸é ½ºÅ©¸³Æ® â¿¡ »ó¼¼ÇÑ ¿¡·¯ ¸Þ½ÃÁö°¡ ³ªÅ¸³­´Ù.

 

5/5       PL/SQL: SQL Statement ignored

5/12      PL/SQL: ORA-00904: "POPULATION": ºÎÀûÇÕÇÑ ½Äº°ÀÚ

 

5Çà 12¿­¿¡ ÀÖ´Â POPULATION Çʵå¸íÀÌ À߸øµÇ¾ú´Ù´Â ¶æÀÌ´Ù. ¿¡·¯°¡ ÀÖ´Â »óÅ¿¡¼­ Á¢¼ÓâÀ» º¸¸é ÇÁ·Î½ÃÀú À̸§¿¡ »¡°£ X°¡ Ç¥½ÃµÇ¾î ¿¡·¯°¡ ÀÖÀ½À» ¾Ë·Á ÁØ´Ù.

user_objects Å×À̺íÀ» ´Ù½Ã ´ýÇÁÇØ º¸¸é STATUS Çʵ尡 INVALID·Î ³ªÅ¸³­´Ù. ÄÄÆÄÀÏ¿¡ ½ÇÆÐÇßÀ¸´Ï ´ç¿¬È÷ ½ÇÇ൵ ¾ÈµÈ´Ù. °³¹ß Áß¿¡ ¿¡·¯´Â ´Ã»ó ¹ß»ýÇÏ´Â °ÍÀ̹ǷΠ´çȲÇÒ ÇÊ¿ä ¾øÀÌ °³¹ßÅøÀÇ ¾È³»¿¡ µû¶ó ¿¡·¯¸¦ ¼öÁ¤ÇÏ¸é µÈ´Ù. popu·Î ¼öÁ¤ÇÏ¿© ´Ù½Ã ÄÄÆÄÀÏÇÏ¸é »¡°£ XÇ¥½Ã°¡ »ç¶óÁø´Ù.

¿À¶óŬÀº ÇÁ·Î½ÃÀú¸¦ µî·ÏÇÒ ¶§ ¹®¹ý°ú Å×ÀÌºí »óȲ µî ¸ðµç °ÍÀ» Á¡°ËÇÏ¿© ÃÖ´ëÇÑ ½Å¼ÓÈ÷ ½ÇÇàÇÒ Áغñ¸¦ ÇØ µÐ´Ù. ±×·¡¼­ ÀÏ´Ü ÄÄÆÄÀϸ¸ ¼º°øÇÏ¸é ½ÇÇà ¼Óµµ°¡ ºü¸£´Ù. ±×·¯³ª ÄÄÆÄÀÏ¿¡ ¼º°øÇß´õ¶óµµ ¿ÜºÎ ȯ°æÀÌ ¹Ù²î¸é ¸ÖÂÄÇÑ ÇÁ·Î½ÃÀú°¡ Å×·¯¸¦ ´çÇÒ ¼öµµ ÀÖ´Ù. ´ÙÀ½ ¸í·ÉÀ» ½ÇÇàÇØ º¸ÀÚ.

 

DROP TABLE tCity;

 

SP_GetPopu ÇÁ·Î½ÃÀú°¡ ÂüÁ¶ÇÏ´Â Å×À̺íÀÌ »ç¶óÁö¸é ÇÁ·Î½ÃÀúµµ °°ÀÌ ¹«È¿ÇØÁö¸ç Á¢¼Óâ¿¡ ´Ù½Ã »¡°£ X Ç¥½Ã°¡ ³ªÅ¸³­´Ù. ÀÌ ¾ÆÀÌÄÜÀÌ ³ªÅ¸³ª¸é ¹º°¡ ÀÌ»óÀÌ ¹ß»ýÇÑ °ÍÀ̹ǷΠÁ¡°ËÇØ º¸°í ¿¡·¯¸¦ ¼öÁ¤ÇØ¾ß ÇÑ´Ù. ÀÌ °æ¿ì´Â tCity Å×À̺íÀ» ´Ù½Ã ¸¸µé¸é Á¤»óÈ­µÈ´Ù.

¿ÜºÎ ȯ°æÀÇ º¯È­¿¡ ÀÇÇØ ÇÙ½É ÇÁ·Î½ÃÀú¿¡ ¿À·ù°¡ ¹ß»ýÇÏ¸é ½Ã½ºÅÛ ¿î¿µ¿¡ Ä¡¸íÀûÀÎ ¿µÇâÀ» ¹ÌÄ£´Ù. Àß ÀÛ¼ºÇØ ³õÀº ÇÁ·Î½ÃÀúµµ Ç×»ó Á¤»ó »óÅÂÀÎÁö °Ç°­À» Àß °ü¸®ÇØ¾ß ÇÑ´Ù. ´ÙÀ½Àº ȣȯ¼º ³ôÀº ÇÁ·Î½ÃÀú¸¦ ÀÛ¼ºÇÏ´Â ÀϹÝÀûÀÎ ÁÖÀÇ »çÇ×ÀÌ´Ù.

 

l ÇÁ·Î½ÃÀú Á¤Àǹ®Àº Ç×»ó ´Üµ¶À¸·Î ½ÇÇàÇÏ´Â °ÍÀÌ ÁÁ´Ù. ´Ù¸¥ ¸í·É°ú °°Àº Äõ¸®Ã¢¿¡¼­ ÀÛ¼ºÇϸé È¥¼±ÀÌ ¹ß»ýÇÒ ¼ö ÀÖ¾î º°µµÀÇ Äõ¸®Ã¢À» ¿­¾î ÀÛ¾÷ÇÏ´Â °ÍÀÌ ¹Ù¶÷Á÷ÇÏ´Ù.

l ÇÁ·Î½ÃÀú´Â Àü¿ªÀûÀ¸·Î °øÀ¯ÇÏ´Â ±â´ÉÀÌ´Ù. ´Ù¸¥ DB¿¡¼­ È£ÃâÇÒ ¼öµµ ÀÖÀ¸¹Ç·Î ¿ÀºêÁ§Æ®ÀÇ ¼Ò¼ÓÀ» ºÐ¸íÈ÷ ¹àÇô¾ß ÇÑ´Ù. tCityº¸´Ù´Â SYSTEM.tCity·Î ¼Ò¼ÓÀ» ¹àÈ÷´Â °ÍÀÌ ¾ÈÀüÇÏ´Ù.

l ¸ðµç SQL ¹®À» ´Ù »ç¿ëÇÒ ¼ö ÀÖÁö¸¸ DDLÀº ÁÖÀÇÇؼ­ »ç¿ëÇØ¾ß ÇÑ´Ù. ƯÈ÷ CREATE ¸í·ÉÀÌ À§ÇèÇѵ¥ ÇÁ·Î½ÃÀú ¾È¿¡¼­ ¶Ç ´Ù¸¥ ÇÁ·Î½ÃÀú¸¦ ¸¸µå´Â °ÍÀº »ó½Ä¼±¿¡¼­ »ý°¢ÇØ ºÁµµ ¸»½éÀÇ ¿©Áö°¡ ¸¹´Ù.

l º»Ã¼¿¡¼­ ÂüÁ¶ÇÏ´Â ¸ðµç °³Ã¼°¡ Á¸ÀçÇØ¾ß ÇÁ·Î½ÃÀú¸¦ ÄÄÆÄÀÏÇÒ ¼ö ÀÖ´Ù. ±×¸®°í ÄÄÆÄÀÏ¿¡ ¼º°øÇÑ ÈÄ¿¡µµ ÂüÁ¶ÇÏ´Â °³Ã¼°¡ Ç×»ó ¿ø·¡ ÇüÅ´ë·Î Á¸ÀçÇÏ´ÂÁö °ü¸®ÇØ¾ß ÇÑ´Ù.

3.ÀåÁ¡

Äõ¸®Ã¢¿¡¼­ SQL ¸í·ÉÀ̳ª Äڵ带 Á÷Á¢ ½ÇÇàÇÏ´Â °Í¿¡ ºñÇØ ÀúÀå ÇÁ·Î½ÃÀú¸¦ È£ÃâÇÏ´Â °ÍÀº ¿©·¯ °¡Áö ÀÌÁ¡ÀÌ ÀÖ´Ù.

 

l ÇÁ·Î½ÃÀú´Â Äõ¸®¹®º¸´Ù ºü¸£´Ù. Ŭ¶óÀ̾ðÆ®°¡ ¼­¹ö·Î SQL ¹®À» º¸³» 󸮸¦ ¿äûÇÏ¸é º¹ÀâÇÑ °úÁ¤À» °ÅÃÄ ¸í·ÉÀ» ½ÇÇàÇÑ´Ù. ¿Ã¹Ù¸¥ ¸í·ÉÀÎÁö, ±ÇÇÑÀº ÀÖ´ÂÁö ÀÏÀÏÀÌ È®ÀÎÇÏ°í ÃÖÀûÈ­ °úÁ¤À» °ÅÃÄ ½ÇÇàÇÑ ÈÄ °á°ú¼ÂÀ» »ý¼ºÇÏ¿© Ŭ¶óÀ̾ðÆ®¿¡°Ô º¸³½´Ù.

Äõ¸®´Â ÀÌ °úÁ¤À» ¸ðµÎ °ÅÃÄ ½ÇÇàÇÏ¸ç ¸í·É¹®°ú °á°ú¼Â ¸ðµÎ ³×Æ®¿öÅ©¸¦ °æÀ¯ÇÏ¿© ¿À°í °¡¹Ç·Î ´À¸®´Ù. ÇÑ ¹ø ÄÄÆÄÀÏÇÑ ¸í·ÉÀº ij½Ã¿¡ ÀúÀåÇÏ¿© ¹Ýº¹½Ã Á¶±Ý ºü¸£Áö¸¸ ij½Ã ¿ë·®¿¡ Á¦ÇÑÀÌ ÀÖ¾î ¾ðÁ¦µç Áö¿öÁú ¼ö ÀÖ´Ù. ij½Ã¿¡¼­ Áö¿öÁö¸é óÀ½ºÎÅÍ ´Ù½Ã ÀÌ °úÁ¤À» ¹Ýº¹ÇÑ´Ù.

ÀÌ¿¡ ºñÇØ ÇÁ·Î½ÃÀú´Â µî·ÏÇÒ ¶§ ±¸¹® ºÐ¼® ¹× º¸¾È Á¡°Ë, ÃÖÀûÈ­±îÁö ¹Ì¸® ÇØ ³õ¾Æ ÀÌ °úÁ¤ Áß ÀϺθ¦ »ý·«ÇÑ´Ù. ¸í·É¹® Àüü°¡ ¾Æ´Ñ ÇÁ·Î½ÃÀú À̸§¸¸À¸·Î È£ÃâÇϹǷΠ³×Æ®¿öÅ© Æ®·¡Çȵµ Àû´Ù. È£ÃâÇÏ¸é ¹Ù·Î µ¿ÀÛÇØ ÀÏ¹Ý SQL ¸í·Éº¸´Ù ¿ùµîÈ÷ ºü¸£´Ù.

l ¸ðµâÈ­¿¡ À¯¸®ÇÏ´Ù. ÇÁ·Î½ÃÀú´Â ƯÁ¤ ÀÛ¾÷À» Àü´ãÇÏ´Â ¼ÒÇÁÆ®¿þ¾î ºÎÇ°ÀÌ´Ù. ÇÁ·Î½ÃÀú¸¦ ü°èÀûÀ¸·Î Àß ±¸ºñÇØ ³õÀ¸¸é Ŭ¶óÀ̾ðÆ®´Â ÇÁ·Î½ÃÀú¸¸ ¼ø¼­´ë·Î È£ÃâÇÏ¿© ¿øÇÏ´Â ÀÛ¾÷À» ÇÒ ¼ö ÀÖ´Ù. °³º° ¸í·É¹®À» ÀÏÀÏÀÌ ÀÛ¼ºÇÒ ÇÊ¿ä ¾øÀÌ Å« ´ÜÀ§ÀÇ ÀÛ¾÷ ¸í·É¸¸ Á¶¸³ÇÏ¸é µÇ´Ï ¾÷¹« ±ÔÄ¢¿¡ ÁýÁßÇÒ ¼ö ÀÖ°í ¿©·¯ ¹ø È£ÃâÇÒ ¼ö ÀÖ¾î Àç»ç¿ë¼ºµµ ¶Ù¾î³ª´Ù.

l ¾÷¹« ±ÔÄ¢ÀÇ ÀÏ°ü¼ºÀ» À¯ÁöÇÑ´Ù. º¹ÀâÇÑ ¾÷¹« ±ÔÄ¢À» ÇÁ·Î½ÃÀú¿¡¼­ ó¸®ÇÏ¸é ´©°¡ È£ÃâÇصµ ¶È°°Àº ±ÔÄ¢À» Àû¿ëÇÑ´Ù. ¾÷¹« ±ÔÄ¢ÀÌ ¹Ù²î´õ¶óµµ Ŭ¶óÀ̾ðÆ®¸¦ ÀÏÀÏÀÌ ¼öÁ¤ÇÒ ÇÊ¿ä ¾øÀÌ ¼­¹ö¿¡ ÀúÀåÇØ ³õÀº ÇÁ·Î½ÃÀú¸¸ ¼öÁ¤ÇÏ¸é µÇ´Ï ÀÏ°ü¼ºÀ» À¯ÁöÇϱ⵵ ½±´Ù.

¸¶Àϸ®Áö Áö±Þ ±ÔÄ¢À» SP_GiveMileage ÇÁ·Î½ÃÀú·Î ÀÛ¼ºÇØ µÎ¸é Ŭ¶óÀ̾ðÆ®´Â »ó¼¼ÇÑ ±ÔÄ¢À» ¸ô¶óµµ »ó°ü¾ø°í ±ÔÄ¢ÀÌ ¹Ù²î¾îµµ ÇÁ·Î½ÃÀú¸¸ ¼öÁ¤ÇÏ¸é µÈ´Ù. ÀÌ·± Áß¿äÇÑ ±ÔÄ¢À» Ŭ¶óÀ̾ðÆ®°¡ °¡Áö¸é ÀúÀå °ø°£À» ³¶ºñÇÏ°í ¼Óµµ´Â ´À·ÁÁö¸ç ÀÏ°ü¼ºÀ» È®º¸Çϱ⵵ ½±Áö ¾Ê´Ù.

l º¸¾È»óÀÇ ÀÌÁ¡ÀÌ ÀÖ´Ù. Å×À̺íÀº ¼û°Ü µÎ°í ÇÁ·Î½ÃÀú¿¡¸¸ ±ÇÇÑÀ» ÁÖ¸é ¿øº» Å×À̺íÀ» ¾ÈÀüÇÏ°Ô º¸Á¸ÇÒ ¼ö ÀÖ´Ù. »ç¿ëÀÚ´Â Å×À̺íÀ» Á÷Á¢ °Çµå¸®Áö ¸øÇÏ°í ¿À·ÎÁö ÇÁ·Î½ÃÀú¿¡ ¹Ì¸® ÀÛ¼ºÇØ ³õÀº Äڵ常 ½ÇÇàÇÒ ¼ö ÀÖ´Ù. ½Ç¼ö³ª ¾ÇÀÇÀûÀÎ ÇØÅ·À» ¿øõÀûÀ¸·Î ¹æÁöÇÑ´Ù.

 

ÀÌ·± ¿©·¯ °¡Áö ÀåÁ¡ÀÌ ÀÖ¾î µ¥ÀÌÅͺ£À̽º ÀÀ¿ë ÇÁ·Î±×·¥¿¡ ÇÁ·Î½ÃÀú¸¦ ³Î¸® »ç¿ëÇÑ´Ù. Ư¼ºÀ» Àß ÀÌÇØÇÏ°í Á¦´ë·Î »ç¿ëÇÏ¸é »ý»ê¼ºÀÌ ³ô¾ÆÁö°í ½Ã½ºÅÛ ¼º´ÉÀ» ±ØÀûÀ¸·Î Çâ»ó½Ãų ¼ö ÀÖ´Ù.