|
| |
¢º |
»ç¿ë °³¿ä
| ¡¡ |
|
| |
|
µ¥ÀÌÅͺ£À̽ºÀÇ ÀúÀå ÇÁ·Î½ÃÀú(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; |
| |
|