<?xml version="1.0" encoding="euc-kr" ?>
<?xml-stylesheet type="text/xsl" href="../okjsplec_c.xsl" ?>
<lecture>
	<title>Procedure »ç¿ëÇÏ±â</title>
	<who>kenu</who>
	<when>2001-11-06 2:42¿ÀÀü</when>
	<what>
		<text>
		<¼Ò½º ÆÄÀÏ¸í="½ÇÇàÈ¯°æ">
Oracle 8.1.5, sqlplus
		</¼Ò½º>
		</text>
		<image>/images/spacer.gif
		</image>
	</what>
	<what>
		<text>
		procedure ¶õ ÀýÂ÷¶õ ¶æÀÔ´Ï´Ù. ÀÏÁ¾ÀÇ ÇÔ¼ö¶ó°í ºÁµµ ¹«¹æÇÕ´Ï´Ù. db ¿¡¼­ ÀÏ°ý(batch)ÀÛ¾÷ÇÏ´Âµ¥ ¾ÆÁÖ ÈÇ¸¢ÇÏ°Ô »ç¿ëµË´Ï´Ù. ÀÏ´Ü ¿¹Á¦·Î oracle ¿ë kboard ÀÇ °Ô½Ã¹°À» ¿Å±â´Â °ÍÀ» ÇØº¸°Ú½À´Ï´Ù. kboard ÀÇ bbsid ´Â °Ô½ÃÆÇ±¸ºÐÄÚµåÀÔ´Ï´Ù. ´©°¡ ÀÚÀ¯°Ô½ÃÆÇ¿¡´Ù°¡ Áú¹®À» ¿Ã·Á³õÀ¸¸é ¿î¿µÀÚ·Î½á´Â Â¥ÁõÀÌ ³ªÁÒ. Á» ½ÉÇÑ Ç¥ÇöÀ» ÇÏÀÚ¸é, È­Àå½Ç¿¡¼­ Á¶ÁØÀ» Àß ¸øÇØ ¿·¿¡ ¶³¾îÁø °ÍÀ» º¸´Â ´À³¦ÀÔ´Ï´Ù.(Á» ½ÉÇßÁö¸¸ »ç½ÇÀÔ´Ï´Ù.) ÀÌ·± °Ô½Ã¹°À» ³»¿ëÀ» ±×´ë·Î º¹»çÇØ¼­ Q&amp;A ¿¡ ¿Å°ÜÁÖ´Â Á¤¸» ¼øÁøÇÑ(¹Ùº¸°°Àº) ÁþÀ» ÇÏ´Â °Íµµ ÇÑ°è°¡ ÀÖ°ÚÁÒ. ´ë½Å ÀÌ °Ô½Ã¹°(ÀÏ·Ã¹øÈ£'seq'°¡ 501ÀÌ¶ó°í ÇÏÁÒ)ÀÇ ±¸ºÐ ÄÚµå¸¦ ÀÚÀ¯°Ô½ÃÆÇ'bbs1'¿¡¼­ Q&amp;A°Ô½ÃÆÇ'bbs5'À¸·Î ¹Ù²ãÁÖ´Â ¿ªÇÒÀ» ÇÏ´Â ÆäÀÌÁö¸¦ Â¥¼­ ¿î¿µÇÏ¸é ÁÁÀ» °ÍÀÔ´Ï´Ù. ½ÇÇà ÀýÂ÷´Â ´ÙÀ½°ú °°À» °ÍÀÔ´Ï´Ù.
		<¼Ò½º ÆÄÀÏ¸í="½ÇÇà¼ø¼­">
1. ¿Å°Ü°¥ °Ô½ÃÆÇ(BBS5)ÀÇ ±×·ì¹øÈ£ÀÇ ÃÖ´ë°ª(max(ref))À» ±¸ÇØ¼­
   NEWREF º¯¼ö¿¡ ÀÔ·ÂÇÕ´Ï´Ù.
    SELECT NVL(MAX(REF),0)+1 FROM KBOARD WHERE BBSID = 'bbs5';
2. °Ô½ÃÆÇ(kboard) ¿¡¼­ ÇØ´ç °Ô½Ã¹°¹øÈ£(seq)ÁÙÀÇ bbsid ¸¦ 'bbs5' ·Î, ref ¸¦ newRef ·Î °íÄ¨´Ï´Ù.
    UPDATE KBOARD SET BBSID = TBBS, REF = NEWREF WHERE SEQ = 501;
3. ³»¿ëÅ×ÀÌºí(kboard_cnts) ¿¡¼­ ÇØ´ç °Ô½Ã¹° ¹øÈ£(seq) ÀÇ bbsid ¸¦ 'bbs5' ·Î °íÄ¨´Ï´Ù.
    UPDATE KBOARD_CNTS SET BBSID = 'bbs5' WHERE SEQ = 501;
		</¼Ò½º>
		</text>
		<image>/images/spacer.gif
		</image>
	</what>
	<what>
		<text>
		ÀÌ°ÍÀ» jsp ÄÚµå·Î Â¥·Á¸é º¸Åë 3°³ÀÇ Statement ¸¦ ½ÇÇàÇØ¾ß ÇÕ´Ï´Ù. ¸Ó¸®¿¡ Áã³³´Ï´Ù. ÇÏÁö¸¸ ¾îÂ¼°Ú½À´Ï±î. Â¥¶ó´Â °ÍÀº Â¥¾ßµÇ´Ï±î¿ä. ±×°Íµµ ÂªÀº ½Ã°£ ¾È¿¡ ¸»ÀÌÁÒ. ÀÌ ±â´ÉÀ» oracle¿¡¼­ Áö¿øÇÏ´Â procedure ÇÔ¼ö¸¦ ¸¸µé¾î¼­ »ç¿ëÇÏ¸é CallableStatement ÇÑ¹ø¸¸ ½ÇÇàÇÏ¸é µË´Ï´Ù. ÀÏ´Ü oracle ¿¡¼­ ÇÁ·Î½ÃÁ®¸¦ ¸¸µé¾î º¸°Ú½À´Ï´Ù.
		<¼Ò½º ÆÄÀÏ¸í="Procedure Name: PROC_KBOARD_MOVE">
 CREATE OR REPLACE PROCEDURE  PROC_KBOARD_MOVE 
   ( MSEQ IN NUMBER, TBBS IN VARCHAR2)
   IS
   NEWREF NUMBER;
 BEGIN
    SELECT NVL(MAX(REF),0)+1 INTO NEWREF
      FROM KBOARD WHERE BBSID = TBBS;

    UPDATE KBOARD SET BBSID = TBBS, REF = NEWREF 
      WHERE SEQ = MSEQ;
    UPDATE KBOARD_CNTS SET BBSID = TBBS 
      WHERE SEQ = MSEQ;
 END; 

		</¼Ò½º>
		</text>
		<image>/images/spacer.gif
		</image>
	</what>
	<what>
		<text>
		Procedure ¸íÀº PROC_KBOARD_MOVE ¶ó°í Çß½À´Ï´Ù. ÆÄ¶ó¸ÞÅÍ´Â 2°³°¡ µé¾î°©´Ï´Ù. ¾îµð·Î °¥ °ÍÀÎÁö ¶°³¯ ³ðÀº ´©±¸ÀÎÁö, "°ú°Å´Â ¹¯Áö¸¶¼¼¿ä"ÀÔ´Ï´Ù. ^^; ÀÌµ¿ÇÒ °Ô½Ã¹°ÀÇ SEQ ´Â MSEQ º¯¼ö¿¡ ÀÌµ¿ÇÑ °Ô½ÃÆÇÀº TBBS ¶ó´Â º¯¼ö¿¡ °¢°¢ ³Ö¾ú½À´Ï´Ù. Type Àº º¸½ÃµíÀÌ °¢°¢ NUMBER ¿Í VARCHAR2 ÀÔ´Ï´Ù. ±×¸®°í ÇÁ·Î½ÃÁ® ³»ºÎ¿¡¼­ »ç¿ëÇÒ º¯¼ö ÇÏ³ª ¼±¾ðÇß½À´Ï´Ù. ÀÌµ¿ÇÒ °Ô½ÃÆÇÀÇ ¸¶Áö¸· ±×·ì¹øÈ£¸¦ °®´Â °ÍÀÌÁÒ. ±¸ÇÑ °ªÀ» NEWREF ¿¡ ÀÔ·ÂÇÕ´Ï´Ù. ±×¸®°í µÎ °³ÀÇ UPDATE Äõ¸®¸¦ ½ÇÇàÇÏ¸é µË´Ï´Ù.
		</text>
		<image>/images/spacer.gif
		</image>
	</what>
	<what>
		<text>¼­ºêÄõ¸®¸¦ »ç¿ëÇÏ¸é NEWREF ¸¦ »©µµ µË´Ï´Ù. ¼Ò½º´Â ¾Æ·¡¿Í °°°ÚÁÒ.
		<¼Ò½º ÆÄÀÏ¸í="Procedure Name: PROC_KBOARD_MOVE">
 CREATE OR REPLACE PROCEDURE  PROC_KBOARD_MOVE 
   ( MSEQ IN NUMBER, TBBS IN VARCHAR2)
   IS
 BEGIN
    UPDATE KBOARD SET BBSID = TBBS, REF = (SELECT NVL(MAX(REF),0)+1 
      FROM KBOARD WHERE BBSID = TBBS)
      WHERE SEQ = MSEQ;
    UPDATE KBOARD_CNTS SET BBSID = TBBS 
      WHERE SEQ = MSEQ;
 END; 
		</¼Ò½º>
		</text>
		<image>/images/spacer.gif
		</image>
	</what>
	<what>
		<text>ÀÌÁ¦ ÀÌ°ÍÀ» ¾î¶»°Ô ½ÇÇàÇÒ±î¿ä. JSP ¿¡¼­ »ç¿ëÇÏ´Â °ÍÀº µû·Î ÇÑÆäÀÌÁö¸¦ ¸¸µé¾î¼­ ¼Ò°³ÇÏ°Ú½À´Ï´Ù. QUERY ½ÇÇàÀº ´ÙÀ½°ú °°½À´Ï´Ù. ´ÙÀ½ °­ÁÂ°¡ ±â´ëµÇ½Ã´ÂÁö ¸ð¸£°Ú³×¿ä. ¾Æ¹¸µç ¹è¿ï°Ô ³Ê¹« ¸¹½À´Ï´Ù. ¸Ó¸® Áã³³´Ï´Ù. °¡²û ¸Ó¸®½ÄÈ÷´Â °÷¿¡¼­ ¿­ Á» ½ÄÈ÷¼¼¿ä. ÁÁÀº ÇÏ·ç µÇ¼¼¿ä.
		<¼Ò½º ÆÄÀÏ¸í="Procedure ½ÇÇà">
CALL PROC_KBOARD_MOVE(501,'bbs5');
		</¼Ò½º>
		</text>
		<image>/images/spacer.gif
		</image>
	</what>
	<what>
		<text>
		<¼Ò½º ÆÄÀÏ¸í="Âü°í¹®¼­">
about JDBC, ¼Õ¿ì»ó, ¿µÁøÃâÆÇ»ç
		</¼Ò½º>
		</text>
		<image>/images/spacer.gif
		</image>
	</what>
</lecture>
