Database/PL SQL
PL/SQL Tutorial - Cursor FOR LOOP
퐁스
2019. 5. 8. 15:14
CURSOR FOR LOOP는 FOR LOOP의 extension 버전이다. 기존의 FOR LOOP가 lower -> upper를 한 번씩 도는 반복문이라면 CURSOR은 반환된 행에 대해 반복을 실행한다. FOR LOOP CURSOR는 암시적으로 루프 인덱스 생성 이후 커서를 연다.
FOR record IN cursor_name
LOOP
process_record_statements;
END LOOP;
1) record
- LOOP 안에서만 사용하는 INDEX
2) cursor_name
- select_statement와 같다
백문이 불여일견이라 한 번 사용해보자.
DECLARE
CURSOR cur_product
IS
SELECT
product_name, list_price
FROM
products
ORDER BY
list_price DESC;
BEGIN
FOR product IN cur_product
LOOP
DBMS_OUTPUT.PUT_LINE( product.product_name || ': $' ||
product.list_price );
END LOOP;
END;
SanDisk SDSSDHII-480G-G25: $141.56
ADATA ASU800SS-512GT-C: $136.69
Samsung MZ-V6E250: $127.88
Samsung MZ-7KE256BW: $119.99
cur_product 라는 cursor가 정의되어 있으며 얘는 product에서 list_price로 정렬된 product_name, list_price 컬럼을 가지고 있다.
product IN cur_product를 보면 파이썬과 유사한 느낌이 든다. (그래서 그냥 마음으로 이해함)
BEGIN
FOR product in (SELECT product_name, list_price FROM products)
LOOP
DBMS_OUTPUT.PUT_LINE( product.product_name || ': $' || product.list_price );
END LOOP;
END;
Crucial: $766.11
G.Skill Trident Z: $760.99
G.Skill Trident Z: $758.99
Corsair Dominator Platinum: $749.99
얘는 아예 커서도 안만들어주고 SELECT 문으로 FOR문을 꾸렸다. 여태 숫자만 넣을 수 있었던 FOR문과 달리 확장된 기능을 제공하는 것을 알 수 있다.