SQL ÇÁ·Î½Ãµà¾î¿¡´Â ´Ù¸¥ SQL ÇÁ·Î½Ãµà¾î¸¦ È£ÃâÇÏ´Â CALL¹®ÀÌ ÀÖ½À´Ï´Ù. ÀÌ ±â´ÉÀº Áßø ÀúÀå ÇÁ·Î½Ãµà¾î¶ó°í Çϴµ¥, ±âÁ¸ SQL ÇÁ·Î½Ãµà¾î¸¦ ´Ù½Ã »ç¿ëÇÏ¿© Á» ´õ º¹ÀâÇÑ ÀÀ¿ëÇÁ·Î±×·¥À» ¼³°èÇÒ ¼ö ÀÖ½À´Ï´Ù.
È£ÃâÀÚ SQL ÇÁ·Î½Ãµà¾î¿¡¼ ¸ñÇ¥ SQL ÇÁ·Î½Ãµà¾î¸¦ È£ÃâÇÏ·Á¸é ÀûÇÕÇÑ ¹øÈ£¿Í ¸Å°³º¯¼ö À¯ÇüÀÇ CALL¹®À» È£ÃâÀÚ¿¡ Æ÷ÇÔ½Ã۱⸸ ÇÏ¸é µË´Ï´Ù. ¸ñÇ¥°¡ OUT ¸Å°³º¯¼ö¸¦ ¸®ÅÏÇϸé È£ÃâÀÚ´Â ¸®ÅÏµÈ °ªÀ» ÀÚü ¸í·É¹®¿¡¼ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
¿¹¸¦ µé¾î, ¸ñÇ¥ SQL ÇÁ·Î½Ãµà¾î¸¦ "SALES_TARGET" À̸§°ú ÇÔ²² È£ÃâÇÏ°í ´ÙÀ½ SQLÀ» »ç¿ëÇÏ¿© INTEGER À¯ÇüÀÇ ´ÜÀÏ OUT ¸Å°³º¯¼ö¸¦ ½ÂÀÎÇÏ´Â SQL ÇÁ·Î½Ãµà¾î¸¦ ÀÛ¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù.
CREATE PROCEDURE NEST_SALES(OUT budget DECIMAL(11,2)) LANGUAGE SQL BEGIN DECLARE total INTEGER DEFAULT 0; SET total = 6; CALL SALES_TARGET(total); SET budget = total * 10000; END
¸ñÇ¥ SQL ÇÁ·Î½Ãµà¾î°¡ °á°ú ¼¼Æ®¸¦ ¸®ÅÏÇÏ¸é ¸ñÇ¥ SQL ÇÁ·Î½Ãµà¾î¿¡¼ ¹ßÇàµÈ DECLARE CURSOR¹®¿¡ µû¶ó È£ÃâÀÚ ¶Ç´Â Ŭ¶óÀÌ¾ðÆ® ÀÀ¿ëÇÁ·Î±×·¥ÀÌ °á°ú ¼¼Æ®¸¦ ¼ö½ÅÇÕ´Ï´Ù. ¸ñÇ¥¿¡ ÀÖÀ¸¸é¼ WITH RETURN TO CLIENTÀýÀ» Æ÷ÇÔÇÏ´Â °¢ DECLARE CURSOR¹®¿¡ ´ëÇØ È£ÃâÀÚ´Â °á°ú ¼¼Æ®¸¦ ¼ö½ÅÇÏÁö ¾Ê½À´Ï´Ù. WITH RETURN TO CLIENT Ä¿¼¿¡ ´ëÇØ °á°ú ¼¼Æ®´Â Á÷Á¢ Ŭ¶óÀÌ¾ðÆ® ÀÀ¿ëÇÁ·Î±×·¥¿¡ ¸®Åϵ˴ϴÙ.
Áßø SQL ÇÁ·Î½Ãµà¾î¿¡¼ °á°ú ¼¼Æ®¸¦ ¸®ÅÏÇÏ´Â °Í¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀº Ŭ¶óÀÌ¾ðÆ® ¹× È£ÃâÀÚ °á°ú ¼¼Æ® ¸®ÅÏÀ» ÂüÁ¶ÇϽʽÿÀ.
ÀÀ¿ëÇÁ·Î±×·¥ ±¸Á¶¸¦ ¼³°èÇÒ ¶§ ´ÙÀ½ Á¦ÇÑ»çÇ×À» ¿°µÎ¿¡ µÎ½Ê½Ã¿À.
NO CLAUSEÀý·Î ÀÛ¼ºµÈ SQL ÇÁ·Î½Ãµà¾î´Â CALL¹®À» ¹ßÇàÇÕ´Ï´Ù.