CallableStatement´Â SQLÀÇ ½ºÅä¾îµåÇÁ·Î½ÃÀú(Stored Procedure)¸¦ ½ÇÇà½Ã۱â À§ÇØ »ç¿ëµÇ´Â ÀÎÅÍÆäÀ̽ºÀÔ´Ï´Ù. ±×·³ ½ºÅä¾îµåÇÁ·Î½ÃÀú¶õ ¹«¾ùÀϱî¿ä? °£´ÜÈ÷ ¾Ë¾Æº¸¸é, Äõ¸®¹®À» ÇϳªÀÇ ÆÄÀÏ ÇüÅ·Π¸¸µé°Å³ª µ¥ÀÌÅͺ£À̽º¿¡ ÀúÀåÇØ ³õ°í ÇÔ¼öó·³ È£ÃâÇØ¼ »ç¿ëÇÏ´Â °ÍÀÔ´Ï´Ù. À̰ÍÀ» ÀÌ¿ëÇÏ¸é ¿¬¼ÓµÇ´Â Äõ¸®¹®¿¡ ´ëÇØ¼ ¸Å¿ì ºü¸¥ ¼º´ÉÀ» º¸À̸ç, ¿©±â¼´Â ´Ù·çÁö ¾ÊÁö¸¸ º¸¾È ¹®Á¦ÀÇ ÇØ°á µî »ó´çÇÑ ÀÌÁ¡ÀÌ ÀÖÀ¸´Ï °³ÀÎÀûÀ¸·Î µ¥ÀÌÅͺ£À̽º Ã¥À» º¸°í °øºÎÇÒ¸¸ÇÑ °¡Ä¡°¡ ÃæºÐÈ÷ ÀÖ´Ù°í »ý°¢ÇÕ´Ï´Ù.
±×·³ ¿ì¸®°¡ ÇÁ·Î±×·¡¹ÖÇÒ ¶§ ¶Ç ¹«½¼ ÀÌÀÍÀÌ ÀÖÀ»±î¿ä? À§¿Í °°Àº ½ÇÇà´É·Â Çâ»ó ¿Ü¿¡ ÀÚ¹ÙÄڵ忡 Äõ¸®¹®ÀÌ µé¾î °¡Áö ¾ÊÀ¸¹Ç·Î ÀÚ¹Ù Äڵ尡 °£°áÇØÁö°í SQL¿¡ µ¶¸³ÀûÀÌ µÈ´Ù´Â °ÍÀÔ´Ï´Ù. °áÄÚ ±×³É Áö³ªÄ¥ ¼ö ¾ø´Â ºÎºÐÀ̰ÚÁÒ?.
CallableStatementÀÇ Æ¯Â¡
n µ¥ÀÌÅͺ£À̽ºÀÇ ½ºÅä¾îµåÇÁ·Î½ÃÀú¸¦ ½ÇÇà½Ãų ¶§ »ç¿ë
n ¼Óµµ, ÄÚµåÀÇ µ¶¸³¼º, º¸¾È¼º¿¡ »ó´çÇÑ ÀÕÁ¡ÀÌ ÀÖÀ½
½ºÅä¾îµåÇÁ·Î½ÃÀú·Î °ªÀ» ¹Þ¾Æ¿À·Á¸é, È£ÃâÇϱ⿡ ¾Õ¼ ¹Ýµå½Ã CallableStatement ÀÎÅÍÆäÀ̽ºÀÇ registerOutParameter ¸Þ¼µå¸¦ È£ÃâÇØ¾ß ÇÕ´Ï´Ù. ÀÌ ÀÎÅÍÆäÀ̽º´Â PreparedStatement ÀÎÅÍÆäÀ̽º·ÎºÎÅÍ »ó¼Ó ¹Þ¾Ò±â ¶§¹®¿¡ setXxx ¸Þ¼µå¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×·³ °£´ÜÇÑ ¿¹Á¦¸¦ ÅëÇØ¼ CallableStatement¸¦ ÀÌ¿ëÇÑ ½ºÅä¾îµåÇÁ·Î½ÃÀúÀÇ ´À³¦À» ¾Ë¾Æ º¸°Ú½À´Ï´Ù.
|
CallableStatementTest.jsp |
CallableStatement¸¦ Å×½ºÆ®ÇÑ ¿¹ |
|
| |
|
| |
|
MS-SQL¿¡¼ÀÇ ½ºÅä¾îµåÇÁ·Î½ÃÀú myStoredProcedure ÀÛ¼º±¸¹® |
|
CREATE PROCEDURE myStoredProcedure @age int , @na varchar(20) OUTPUT , @ageo int OUTPUT AS
SELECT @na = name, @ageo = age FROM MyTest Where age = @age |
¿¹Á¦ÀÇ JSPÄڵ忡´Â SQLÀÇ Äõ¸®¹®ÀÌ µé¾î°¡ ÀÖÁö ¾ÊÀº °ÍÀ» È®ÀÎÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×¸®°í À§¿¡ Á¤¸®ÇØ ³õÀº ½ºÅä¾îµåÇÁ·Î½ÃÀú ±¸¹®À» »ç¿ëÇÏ¿© SQL ¼¹ö ³»¿¡ Äõ¸®¹®À» ÀúÀåÇß½À´Ï´Ù. ÀÛ¼ºµÈ ½ºÅä¾îµåÇÁ·Î½ÃÀú¿¡ ´ëÇØ Àá½Ã ¼³¸íµå¸®°Ú½À´Ï´Ù.
ù¹øÂ° ÁÙÀº ½ºÅä¾îµåÇÁ·Î½ÃÀúÀÇ »ý¼º°ú »ý¼ºµÉ ½ºÅä¾îµåÇÁ·Î½ÃÀúÀÇ À̸§À» ¼±¾ðÇϰí ÀÖ½À´Ï´Ù.
n CREATE PROCEDURE myStoredProcedure
µÎ¹øÂ° ÁÙºÎÅÍ ³×¹øÂ° ÁÙ±îÁö´Â ½ºÅä¾îµåÇÁ·Î½ÃÀú¿¡¼ »ç¿ëÇÒ ¸Å°³º¯¼ö¸¦ ¼±¾ðÇϰí ÀÖ½À´Ï´Ù. ¸Å°³º¯¼ö´Â ±× ¾Õ¿¡ @¸¦ ºÙ¿©¼ Ç¥½ÃÇÕ´Ï´Ù. ±× Áß¿¡¼ getXxx ¸Þ¼µå·Î ¸®Å쵃 ¸Å°³º¯¼ö´Â OUTPUTÀ» »ç¿ëÇÏ¿© µû·Î Ç¥½ÃÇÕ´Ï´Ù. ¸Å°³º¯¼ö´Â ÃÖ´ë 2100°³±îÁö »ç¿ëÇÒ ¼ö ÀÖÀ¸¸ç ¿©·¯ °³ÀÇ ¸Å°³º¯¼ö¸¦ ¼±¾ðÇÒ ¶§¿¡´Â ¹Ýµå½Ã ÄÞ¸¶(,)¸¦ »ç¿ëÇÏ¿© ±¸ºÐÇØ¾ßÇÕ´Ï´Ù. °¢°¢ÀÇ Àǹ̴ ´ÙÀ½°ú °°½À´Ï´Ù.
n @¡®º¯¼ö¸í¡¯ ¡®µ¥ÀÌÅÍÇü¡¯ ¡®¸®ÅÏ¿©ºÎ¡¯
º¯¼öÀÇ ¼±¾ðÀÌ ³¡³ª¸é as¸¦ »ç¿ëÇÑ ÈÄ SQL ±¸¹®À» ÀÛ¼ºÇÕ´Ï´Ù.
n SELECT @na=name,@ageo=age FROM MyTest WHERE age=@age
ÀÌÁ¤µµ¸¸ ¾Ë°í À־ ½ºÅä¾îµåÇÁ·Î½ÃÀú¸¦ »ç¿ëÇÏ´Â µ¥¿¡´Â º° ¹®Á¦°¡ ¾øÀ» °ÍÀÔ´Ï´Ù. Á»´õ ÀÚ¼¼ÇÑ ³»¿ëÀ» ¿øÇÏ½Å´Ù¸é µ¥ÀÌÅͺ£À̽º °ü·Ã ¼ÀûÀ» º¸½Ã±â ¹Ù¶ø´Ï´Ù.
±×·¯¸é Áö±ÝºÎÅÍ À§¿¡¼ ¼³¸íµå¸° ½ºÅä¾îµåÇÁ·Î½ÃÀú¸¦ »ç¿ëÇÑ CallableStatementTest.jsp¿¹Á¦¿¡ ´ëÇØ ¼³¸íµå¸®°Ú½À´Ï´Ù. CallableStatement °´Ã¼ cs¸¦ »ý¼ºÇÏ¿© ÇÁ·Î½ÃÀú¸¦ È£ÃâÇϱâ À§ÇÑ prepareCall ¸Þ¼µå¸¦ »ç¿ëÇϰí ÀÖ½À´Ï´Ù. ¿©±â¼ ¹°À½Ç¥(?)°¡ ÇÁ·Î½ÃÀú·Î Àü´ÞµÇ°í ¹Þ¾Æ¿Ã ¸Å°³º¯¼öÀÎ °ÍÀÔ´Ï´Ù.
n CallableStatement cs = con.prepareCall("{call myStoredProcedure(?, ?, ?)}");
setXxx ¸Þ¼µå¸¦ ÀÌ¿ëÇÏ¿© ÇÁ·Î½ÃÀú¿¡ »ç¿ëÇÒ ÀÎÀÚ°ªÀ» ³Ö¾îÁÖ°Ô µË´Ï´Ù. ±×¸®°í ¸®ÅϵǴ °ªµéÀ» ¹Þ¾Æ¾ß°ÚÁÒ. ÀÏ¹Ý ¸Þ¼µå¿Í ´Þ¸® ¿©·¯ °³ÀÇ ÀÎÀÚ°ªÀ» ¹ÞÀ» ¼ö ÀÖ½À´Ï´Ù. À̶§ ½ºÅä¾îµåÇÁ·Î½ÃÀú¿¡¼ ³Ñ¾î¿À´Â °ªÀ» ¾ò±â À§Çؼ registerOutParameter ¸Þ¼µå¸¦ ÀÌ¿ëÇÏ¿© ¹ÝȯµÇ´Â °ªµéÀ» ¼ÂÆÃÇÏ°Ô µË´Ï´Ù.
n cs.setInt(1,2);
n cs.registerOutParameter(2, java.sql.Types.VARCHAR);
n cs.registerOutParameter(3, java.sql.Types.INTEGER);
¹ÝȯµÇ´Â °ªÀ» ¾ò±â À§Çؼ´Â CallableStatement¸¦ ½ÇÇàÇÑ ÈÄ ´ÙÀ½°ú °°ÀÌ ¹Ýȯ°ªÀ» ¾ò¾î ³¾ ¼ö ÀÖ½À´Ï´Ù.
n cs.execute();
n <td><%=cs.getString(2)%></td>
n <td><%=cs.getInt(3)%></td>
Á¤¸®ÇØ º¸ÀÚ¸é, ÀÌ·¸°Ô CallableStatement ÀÎÅÍÆäÀ̽º´Â µ¥ÀÌÅͺ£À̽ºÀÇ ½ºÅä¾îµåÇÁ·Î½ÃÀú¸¦ È£ÃâÇϱâ À§ÇØ prepareCall ¸Þ¼µå¸¦ ÀÌ¿ëÇÏ¿© CallableStatement °´Ã¼¸¦ »ý¼ºÇÕ´Ï´Ù. ±× prepareCall ¸Þ¼µå´Â Connection ÀÎÅÍÆäÀ̽ºÀÇ ¸Þ¼µåÀÔ´Ï´Ù. ½ºÅä¾îµåÇÁ·Î½ÃÀú¸¦ ½ÇÇàÇϱâ Àü¿¡ ¹Þ¾Æ¿Ã °ª¿¡ ´ëºñÇϱâ À§Çؼ registerOutParameter ¸Þ¼µå¸¦ »ç¿ëÇÏ´Â °Íµµ ¸í½ÉÇØ¾ß ÇÒ Á¡ÀÔ´Ï´Ù.
|
CallableStatement ÀÎÅÍÆäÀ̽º ÁÖ¿ä ¸Þ¼µå |
|
public void registerOutParameter(int parameterIndex, int sqlType) throws SQLException : ÇÁ·Î½ÃÀú·Î ¹Þ¾Æ¿Â °ªÀ» JDBCŸÀÔÀ¸·Î µî·ÏÇÕ´Ï´Ù. ¸ðµç ¹Þ¾Æ¿Â °ªÀº ¹Ýµå½Ã ÀÌ °úÁ¤À» °ÅÃÄ¾ß ÇÕ´Ï´Ù. ´ëÇ¥ÀûÀÎ sqlTypeÀ» ¾Ë¾Æº¸¸é NULL, FOLAT, INTEGER, DATEµîÀÌ ÀÖ½À´Ï´Ù. *PreparedStatementŬ·¡½º¸¦ »ó¼ÓÇϹǷΠgetXXX()µî, PreparedStatement°¡ °¡Áö°í ÀÖ´Â ¸Þ¼µå¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. |
| jabookÀúÀÚ¸íÇÔ |
|
Á¦¸ñ:¼Ò¼³°°ÀºJSP2ºÎ ÀúÀÚ:ÃÖ¿µ°ü |