728x90
# 중첩 테이블
문제57. (p6-23) 중첩 테이블을 사용해서 dept 테이블에서 모든 부서번호와 부서위치를 출력될 수 있도록 하시오
SET serveroutput ON
DECLARE
TYPE dept_table_type IS TABLE OF
dept%ROWTYPE INDEX BY PLS_INTEGER;
dept_table dept_table_type;
v_count NUMBER(10) := 10;
BEGIN
FOR i IN 1..4 LOOP
SELECT * INTO dept_table(i)
FROM DEPT
WHERE deptno = v_count;
v_count := v_count + 10;
END LOOP;
FOR i IN DEPT_TABLE.FIRST .. DEPT_TABLE.LAST LOOP
dbms_output.put_line(dept_table(i).deptno || ' 의 부서는 ' || dept_table(i).loc);
END LOOP;
END;
/
문제58. 아래의 작업을 한 후에 사원 테이블에서 사원번호, 이름, 월급을 모두 출력하는 PL/SQL을 작성하시오
create table emp12
as select rownum rnk, emp.* from emp;
drop table emp;
rename emp12 to emp;
create table emp12
as select rownum rnk, emp.* from emp;
drop table emp;
rename emp12 to emp;
set serveroutput on
set verify OFF
declare
type emp_table_type is table of emp%rowtype index by pls_integer;
emp_table emp_table_type;
v_cnt number(10);
begin
select count(*) into v_cnt
from emp;
for i in 1.. v_cnt loop
select * into emp_table(i)
from emp
where rnk=i;
end loop;
for i in 1.. v_cnt loop
dbms_output.put_line(emp_table(i).ename || ', ' || emp_table(i).ename || ', ' || emp_table(i).sal);
end loop;
end;
/
l where rnk=i; // 한번에 여러개의 data가 나오지 않아야 한다. 한번에 하나씩 나와야 하므로
l end loop; // where절을 통해 조절한다.
'빅데이터과정 > PL/SQL ' 카테고리의 다른 글
#11_140627_PL_SQL_예외처리 (0) | 2014.07.14 |
---|---|
#10_140626_PL_SQL_CURSOR (0) | 2014.07.14 |
#10_140626_PL_SQL_RECORD (0) | 2014.07.14 |
#10_140626_PL_SQL_LABEL (0) | 2014.07.14 |
#12_140630_PL_SQL_PROCEDURE (0) | 2014.07.14 |