
DECLARE
-- 사원 이름을 출력하기 위한 PL/SQL 테이블 선언
TYPE ename_table IS TABLE OF emp.ename%TYPE
INDEX BY BINARY_INTEGER;
-- 사원 급여를 출력하기 위한 PL/SQL 테이블 선언
TYPE sal_table IS TABLE OF emp.sal%TYPE
INDEX BY BINARY_INTEGER;
ename_tab ename_table;
sal_tab sal_table;
i BINARY_INTEGER := 0;
BEGIN
DBMS_OUTPUT.ENABLE;
FOR emp_list IN (SELECT ename, sal
FROM emp
WHERE deptno = 10) LOOP
i := i +1 ;
-- 테이블에 상품 이름을 저장
ename_tab(i) := emp_list.ename;
-- 테이블에 상품 가격을 저장
sal_tab(i) := emp_list.sal;
END LOOP;
-- 화면에 출력
FOR cnt IN 1..i LOOP
DBMS_OUTPUT.PUT_LINE('사원이름 : ' || ename_tab(cnt));
DBMS_OUTPUT.PUT_LINE('사원급여 : ' || sal_tab(cnt));
END LOOP;
END;
/
사원이름 : CLARK
사원급여 : 2450
사원이름 : KING
사원급여 : 5000
사원이름 : MILLER
사원급여 : 1300
- 강좌 URL : https://www.gurubee.net/lecture/1056
- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^
- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.
강좌 감사하게 보고 있습니다.
그런데, 질문하나 있어욤
제가 잘 몰라서 그러는데요
insert, update, delete에 나와 있는 예제는
실행하고 나면 프로시저 이름들이 각각 생성이 되어서
언제든지 호출해서 실행하게 되었었는데
그런데 이번 프로시저는 따로 이름이 생성되지는 않고
실행할 때마다 전체를 다시 실행해야 실행되더라구요
무엇을 모르는걸까요?
사용환경은 토드에서 하고 있습니다.
아래처럼 변경해서 실행했더니 결과가 잘 나오네요 맞는거겠져?
CREATE OR REPLACE PROCEDURE emp_list
(v_deptno IN emp.deptno%TYPE )
IS
-- 사원 이름을 출력하기 위한 PL/SQL 테이블 선언
TYPE ename_table IS TABLE OF emp.ename%TYPE
INDEX BY BINARY_INTEGER;
-- 사원 급여를 출력하기 위한 PL/SQL 테이블 선언
TYPE sal_table IS TABLE OF emp.sal%TYPE
INDEX BY BINARY_INTEGER;
ename_tab ename_table;
sal_tab sal_table;
i BINARY_INTEGER := 0;
BEGIN
DBMS_OUTPUT.ENABLE;
FOR emp_list IN ( SELECT ename, sal
FROM emp
WHERE deptno = v_deptno) LOOP
i := i +1 ;
-- 테이블에 상품 이름을 저장
ename_tab(i) := emp_list.ename;
-- 테이블에 상품 가격을 저장
sal_tab(i) := emp_list.sal;
END LOOP;
-- 화면에 출력
FOR cnt IN 1..i LOOP
DBMS_OUTPUT.PUT_LINE('사원이름 : ' || ename_tab(cnt));
DBMS_OUTPUT.PUT_LINE('사원급여 : ' || sal_tab(cnt));
END LOOP;
END ;
/