블로그는 나의 힘!
[ Programing ]/Database2011. 7. 25. 18:12
- FOR LOOP 문

FOR 변수 IN 초기값..최종값 LOOP
   처리문
END LOOP;

: 변수를 초기 값 부터 1씩 증가하여 최종값이 될 때까지 반복.

 

해당 파일은 PL-SQL For 문으로 해당 아이템 인덱스를 삭제하는 프로시져 이다.
목적은 첫번째 인자에서 두번째 인자 사이에 있는 아이템을 삭제 한다.

-- Function: fn_delete_item_list(integer, integer)
-- DROP FUNCTION fn_delete_item_list(integer, integer);

CREATE OR REPLACE FUNCTION fn_delete_item_list(integer, integer)
   RETURNS integer AS
$BODY$
DECLARE
     _itemid_start     ALIAS for $1;
     _itemid_end       ALIAS for $2;
     _itemid           integer;
BEGIN
     FOR _itemid 
     IN select itemindex from tb_item_list 
        where itemindex >= _itemid_start and itemindex <= _itemid_end LOOP

             DELETE FROM tb_item_list WHERE itemindex = _itemid;
     END LOOP;

     RETURN 0;
END;

$BODY$
   LANGUAGE plpgsql VOLATILE
   COST 100;
ALTER FUNCTION fn_delete_item_list(integer, integer) OWNER TO admin




설명 :

CREATE OR REPLACE FUNCTION fn_delete_itemlist(integer)
     프로시져 시작


-- 
     주석이다.


RETURNS integer AS
     integer로 데이터를 반환 한다.


_itemid_start     ALIAS for $1;
_itemid_end       ALIAS for $2;
     ALIAS for $1는 fn_delete_item_list(integer, integer)의 인자 첫번째를 가리키며,
     ALIAS for $2는 fn_delete_item_list(integer, integer)의 인자 첫번째를 가리킨다.
     즉, 각각 인자를 대입한다.



FOR _itemid 
     IN select itemindex from tb_item_list 
        where itemindex >= _itemid_start and itemindex <= _itemid_end LOOP

     for 문과 유사하다.
     IN select itemindex from tb_item_list ... 문을 검사 하여 해당 데이터를 
     _itemid에 대입한다.



DELETE FROM tb_item_list WHERE itemindex = _itemid;
     대입한 _itemid를 delete 쿼리에 조건으로 사용하여 해당 item index를 삭제 한다.

'[ Programing ] > Database' 카테고리의 다른 글

[PL-SQL] 디버깅 방법.  (0) 2011.07.25
[PL-SQL] 대입 연산자와 비교 연산자.  (0) 2011.07.25
[PL-SQL] IF문 사용법  (0) 2011.07.25
[SQL] using 조인  (0) 2011.07.25
[SQL] 자연 조인. NATURAL JOIN  (0) 2011.07.24
Posted by Mister_Q