2013년 12월 9일 월요일

오라클 명시적 커서 예제(Explicit Cursor) [ORACLE/JAVA/.NET/C#/ASO.NET/ADO.NET/iOS/ANDROID/환급/재직자/교육]

오라클 명시적 커서 예제(Explicit Cursor) 입니다. LOOP~END LOOP 이용

  [ORACLE/JAVA/.NET/C#/ASO.NET/ADO.NET/iOS/ANDROID/환급/재직자/교육]

S_ITEM 테이블에서 주문번호를 입력받아 각 상품에 해당하는 주문액과 총금액을 출력

 

CREATE OR REPLACE PROCEDURE show_ordtotal
( v_ord_id    IN              s_item.ord_id%TYPE )
IS
  v_product_id      s_item.product_id%TYPE ;
  v_item_total        NUMBER(11,2);
  v_total                NUMBER(11,2) := 0;
    -- 커서선언, 아직 실행은 안됨
    CURSOR ordtotal_cursor IS
      SELECT    product_id, price*quantity
      FROM      s_item
      WHERE    ord_id = v_ord_id;
BEGIN
  -- 커서 오픈, 비로서 실행
  OPEN          ordtotal_cursor;

  LOOP
      -- 실행 결과 ResordSet에서 한건씩 추출
      FETCH    ordtotal_cursor INTO    v_product_id, v_item_total;

      EXIT              WHEN    ordtotal_cursor%NOTFOUND;
      DBMS_OUTPUT.PUT_LINE(TO_CHAR(v_product_id,'9999999')||
            '  '||TO_CHAR(v_item_total,'9,999,999'));
      v_total := v_total + v_item_total;
  END LOOP;
  DBMS_OUTPUT.PUT_LINE('Total Amount : '||
                              TO_CHAR(v_total,'999,999,999.99'));
  //커서 닫기
  CLOSE                ordtotal_cursor;
END;


댓글 없음:

댓글 쓰기