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문과 달리 확장된 기능을 제공하는 것을 알 수 있다.
'Database > PL SQL' 카테고리의 다른 글
PL/SQL Tutorial - Variables with REF CURSOR (0) | 2019.05.08 |
---|---|
PL/SQL Tutorial - Parameters (0) | 2019.05.08 |
PL/SQL Tutorial - Cursor (0) | 2019.05.08 |
PL/SQL Tutorial - SELECT INTO (0) | 2019.05.08 |
PL/SQL Tutorial - Exception handlers (0) | 2019.05.08 |