- 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 |