오라클 명시적 커서 예제(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;
/
[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;
/
댓글 없음:
댓글 쓰기