본문 바로가기

Database/PL SQL

PL/SQL Tutorial - Cursor FOR LOOP

 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