AI Designer ¼³¸í > AI Designer Ȱ¿ë > µ¥ÀÌÅͺ£À̽º Ȱ¿ë
ÀúÀå ÇÁ·Î½ÃÀú(Stored Procedure) Ȱ¿ë
   
¢º »ç¿ë °³¿ä ¡¡
   
  µ¥ÀÌÅͺ£À̽ºÀÇ ÀúÀå ÇÁ·Î½ÃÀú(Stored Procedure)¸¦ È£ÃâÇÏ¿© º¸°í¼­ µ¥ÀÌÅͷΠȰ¿ëÇÒ ¼ö ÀÖµµ·Ï Áö¿øÇÕ´Ï´Ù.
ÀúÀå ÇÁ·Î½ÃÀú¸¦ Ȱ¿ëÇϸé SQL ±¸¹® ½ÇÇà¿¡ µû¸¥ ½Ã°£ ´ÜÃà ¹× ³×Æ®¿÷ Æ®·¡ÇÈÀ» ÁÙÀÏ ¼ö ÀÖ½À´Ï´Ù.
 
   
¢º ÀúÀå ÇÁ·Î½ÃÀúÀÇ ±¸ºÐ  
   
  1. SQL Server Type
- ÀϹÝÀûÀÎ SQL ±¸¹®À» ÅëÇÏ¿© ·¹ÄÚµå ¼ÂÀ» ÃßÃâÇÕ´Ï´Ù.( MS SQL Server, Sybase µî)
ex 1) Input ÆÄ¶ó¹ÌÅͰ¡ ¾øÀ» °æ¿ì

ALTER procedure sp_customer_list()
result(id integer,company_name char(35))
begin
    select id,company_name from customer
end

ex 2) Input ÆÄ¶ó¹ÌÅͰ¡ ÀÖÀ» °æ¿ì

ALTER procedure sp_customer_products(inout customer_id integer)
result(id integer,quantity_ordered integer)
begin
    select product.id,sum(sales_order_items.quantity)
    from product, sales_order_items, sales_order
    where sales_order.cust_id = customer_id
    and sales_order.id = sales_order_items.id
    and sales_order_items.prod_id = product.id
    group by product.id
end

2. Oracle Type
- ÀϹÝÀûÀÎ SQL ±¸¹®¿¡ Ref Cursor¸¦ Ãß°¡ÇÏ¿© ·¹ÄÚµå ¼ÂÀ» ÃßÃâÇÕ´Ï´Ù.
ex 1) Input ÆÄ¶ó¹ÌÅͰ¡ ÀÖÀ» °æ¿ì

create or replace package Employee as
cursor c1 is select * from emp;
type empCur is ref cursor return c1%rowtype;

procedure GetEmpData(indeptno in NUMBER, EmpCursor in out empCur);
end Employee;

procedure GetEmpData(indeptno in NUMBER, EmpCursor in out empcur) is
begin
    open EmpCursor for
    select * from emp where deptno = indeptno;
end GetEmpData;

 
   
¢º ÀúÀå ÇÁ·Î½ÃÀú ÀÚ·áÇü(Ȱ¿ë °¡´ÉÇÑ ÀÚ·áÇü)  
   
  µ¥ÀÌÅͺ£À̽º ÀÚ·áÇü°ú º¸°í¼­ ¼Ò½º(jsp, asp, java, aspx) ÀÚ·áÇü°úÀÇ ¸ÅÇÎÀ» À§ÇØ ³»ºÎÀûÀ¸·Î ¹®ÀÚÇü, Á¤¼öÇü, ½Ç¼öÇüÀ¸·Î ¹üÁÖÈ­µÈ ´Ü¼ø ÀÚ·áÇü ( µ¥ÀÌÅÍ Å¸ÀÔ ) À» »ç¿ëÇϰí ÀÖÀ¸¸ç , ÀÌ ±ÔÄ¢Àº ½ºÅä¾îµå ÇÁ·Î½ÃÀú¿¡¼­µµ µ¿ÀÏÇÏ°Ô Àû¿ëµË´Ï´Ù.
ÀÚ·áÇüÀº ´ÙÀ½ ½Äº°ÀÚ ÁßÀÇ Çϳª¸¦ »ç¿ëÇØ¾ß ÇÕ´Ï´Ù.
½Äº°ÀÚ
ÀÚ·áÇü
Âü°í
¹®ÀÚÇü
Char
Á¤¼öÇü
Integer
½Ç¼öÇü
Float
Cursor
Cursor
Oracle
 
   
¢º ÀúÀå ÇÁ·Î½ÃÀú »ç¿ë ¹æ¹ý  
   
 

1. ÀúÀå ÇÁ·Î½ÃÀú È£Ãâ
1-1. Oracle Type(Input Parameter°¡ ÀÖ´Â °æ¿ì)
- È£ÃâÇÒ ÀúÀå ÇÁ·Î½ÃÀú¸íÀ» ¼±Åà ÈÄ ½ÇÇàÇÕ´Ï´Ù.


- Oracle ÀúÀå ÇÁ·Î½ÃÀú´Â ¹Ýµå½Ã »ç¿ëÀÚ°¡ ÆÄ¶ó¹ÌÅÍ °¹¼ö¸¦ ÀÔ·ÂÇØ¾ß Çϸç, ÀÔ·Â ½Ã Cursor Type ÆÄ¶ó¹ÌÅ͸¦ ¹«Á¶°Ç Æ÷ÇÔ½Ãŵ´Ï´Ù.
ÆÄ¶ó¹ÌÅÍ °¹¼ö(n+1) = Input ÆÄ¶ó¹Ì³Ê °¹¼ö(n) + Cursor °¹¼ö(1)



- ÆÄ¶ó¹ÌÅÍÀÇ µ¥ÀÌÅÍÇü°ú °ªÀ» ÀÔ·ÂÇÕ´Ï´Ù. À妽ºº°·Î 'ÆÄ¶ó¹ÌÅÍ Àû¿ë' ¹öưÀ» Ŭ¸¯ÇÏ¿© °¢°¢ Àû¿ëÇØ¾ß ÇÕ´Ï´Ù.
- ÆÄ¶ó¹ÌÅÍ °ª¿¡´Â °íÁ¤µÈ »ó¼ö³ª AI Designer ¿µ¿ª¿¡ ÀÌ¹Ì ¼±¾ðµÈ Parameter¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù
  (¡Ø »çÀü¿¡ ÆÄ¶ó¹ÌÅÍ ¼³Á¤ÀÌ µÇ¾î ÀÖÁö ¾Ê¾Ò´õ¶óµµ ƯÁ¤ ÆÄ¶ó¹ÌÅ͸íÀ» °ª¿¡ µî·ÏÇϸé ÀÚµ¿ Ãß°¡µË´Ï´Ù.)
- À妽º ¿µ¿ªÀÇ ¸ðµç ÆÄ¶ó¹ÌÅÍ °ª ¼ÂÆÃÀ» ¿Ï·áÇÑ µÚ ÇÏ´ÜÀÇ 'È®ÀÎ' ¹öưÀ» ´©¸¨´Ï´Ù.




- ÆÄ¶ó¹ÌÅÍ¿¡ ±âº» °ª ¼³Á¤ ÈÄ 'È®ÀÎ' ¹öưÀ» Ŭ¸¯ÇÕ´Ï´Ù.
  (¡Ø ±âº» °ªÀ» ³ÖÀ» Çʿ䰡 ¾ø´Â °æ¿ì ºó °ø¶õÀ¸·Î ó¸®Çϼŵµ µË´Ï´Ù.)


- Input ÆÄ¶ó¹ÌÅÍ °ª¿¡ µû¶ó ¿©·¯ °³ÀÇ ·¹ÄÚµå ¼ÂÀ» »ý¼ºÇÏ¿© Ȱ¿ëÇÒ ¼ö ÀÖÀ¸¹Ç·Î ±¸ºÐÇÒ ¼ö ÀÖ´Â ½Äº°ÀÚ¸¦ ÀÔ·ÂÇØ ÁÝ´Ï´Ù.
  (¡Ø ½Äº°ÀÚ´Â ¿µ¹® ¶Ç´Â ¼ýÀÚ¸¸ »ç¿ëÇÕ´Ï´Ù.)


- »ý¼ºµÈ ÀúÀåÇÁ·Î½ÃÀú µ¥ÀÌÅÍ ¼ÂÀº Database Á¤º¸Ã¢ ÇØ´ç ÇÁ·Î½ÃÀú¸í ÇÏ´Ü¿¡ »ý¼ºµË´Ï´Ù.
- ÀÌÈÄ »ç¿ë ¹æ¹ýÀº Äõ¸®º¯¼ö Ȱ¿ë¹ý°ú µ¿ÀÏÇÕ´Ï´Ù.
¢Ñ AI Designer ¼³¸í > AI Designer Ȱ¿ë > µ¥ÀÌÅͺ£À̽º Ȱ¿ë > Äõ¸®µðÀÚÀÌ³Ê È°¿ë > ¢º Äõ¸® º¯¼ö¸¦ º¸°í¼­ ÀÛ¾÷â¿¡ Àû¿ëÇϱâ ÂüÁ¶


1.2 SQL Server Type(Input Parameter°¡ ÀÖ´Â °æ¿ì)
- Oracle Type(Input Parameter°¡ ÀÖ´Â °æ¿ì) »ç¿ë ¹æ¹ý°ú µ¿ÀÏ(º°µµÀÇ ÆÄ¶ó¹ÌÅÍ °¹¼ö ÀԷ â ¾øÀ½)

 
   
¢º ÀúÀå ÇÁ·Î½ÃÀú Ȱ¿ë ½Ã À¯ÀÇ»çÇ×  
   
  1. Input ÆÄ¶ó¹ÌÅ͸¸ Áö¿ø(Output ÆÄ¶ó¹ÌÅÍ´Â Áö¿øÇÏÁö ¾Ê½À´Ï´Ù.)

2. char, integer, float µ¥ÀÌŸÇü¸¸ Áö¿ø
¾Æ·¡ÀÇ ¿¹¿Í °°ÀÌ µ¥ÀÌŸÇüÀÌ %TYPEÀ¸·Î ¼±¾ðµÈ ÆÄ¶ó¹ÌÅÍ´Â Áö¿øÇÏÁö ¸øÇÔ.
(Å×À̺íÀÌ ¼öÁ¤µÉ ¶§¸¶´Ù ÇÁ·Î½ÃÀú¸¦ ¼öÁ¤ÇØÁÖ¾î¾ß ÇÏ´Â ºÒÆíÇÔÀÌ ÀÖÀ½)
¿¹) v_cd_plant_delivery PO_ASN.CD_PLANT_DELIVERY%TYPE; = Input ÆÄ¶ó¹Ì³Ê °¹¼ö(n) + Cursor °¹¼ö(1)

3. pakage ³»¿¡ »ý¼ºµÈ ÇÁ·Î½ÃÀú¸¸ Áö¿ø
pakage ·Î ±¸¼ºÇÏÁö ¾ÊÀº ÇÁ·Î½ÃÀú´Â ÀνÄÇÏÁö ¸øÇÕ´Ï´Ù.
¿¹)
CREATE OR REPLACE PACKAGE BODY PKG_ASN_CONTROL
AS
v_asn_cnt number; //º¸Åë ÀÌ·± ÀÎÀÚ´Â ÇÁ·Î½ÃÀú ³»¿¡ ¼±¾ðÇÏÁö¸¸ ¾Æ·¡ ¨ç ÀÇ À§Ä¡(ÇÁ·Î½ÃÀú ³»)¿¡ ¼±¾ðÇÏ¸é ¿¡·¯ ¹ß»ý

PROCEDURE GetAsnData(in_xasn_id in VARCHAR2, in_xpo_no in VARCHAR2, AsnCursor out asnCur)
IS

¨ç

   BEGIN
      SELECT COUNT(*)
      INTO v_asn_cnt
      FROM PO_ASN_PRINT
      WHERE XASN_ID = in_xasn_id;
   PEN AsnCursor FOR
      SELECT * FROM PO_ASN_PRINT WHERE XASN_ID = in_xasn_id;
   END GetAsnData;
END PKG_ASN_CONTROL;