명시적 커서는 커서를 관리하는데 필요한 PL/SQL코드를 PL/SQL 프로그래머가 직접 작성하는 커서이다.
declare
vempno number(4);
vename varchar2(20);
vsal number(7, 2);
cursor c1 is
select empno, ename, sal
from emp
where deptno = 20;
begin
open c1;
dbms_output.put_line('empno ename slal');
loop
fetch c1 into vempno, vename, vsal;
exit when c1%notfound;
dbms_output.put_line(to_char(vempno)||' '||vename||' '||to_char(vsal));
end loop;
close c1;
end;
1) 커서를 선언한다
cursor c1 is
2) 커서를 오픈한다.
open c1;
3)커서에 조회한 결과를 인출해 지정한다.
fetch c1
4)커서를 닫는다.
close c1;
[암시적 커서]
암시적 커서는 커서를 처리하는 코드를 직접 작성할 필요가 없다. 암시적 커서를 이용할 때 역시 레코드를 이용한 작업이 가능하지만 커서의 라이프 사이클을 관리하는 코드를 직접 작성하지 않아도 된다.
declare
begin
for my_dept_rec in (select department_id, department_name
from departments order by 1)
loop
dbms_output.put('Department : ' || my_dept_rec.department_id);
dbms_output.put_line(' is named '|| my_dept_rec.department_name);
end loop;
end;
%NOTFOUND : PL/SQL 코드가 마지막으로 얻은 커서의 결과셋에 레코드가 없었는지를 나타낸다.
%ROWCOUNT : 현재 시점에서 커서에서 얻은 레코드의 수를 리턴한다.
%ISOPEN : 커서가 열렸으면, 아직 닫히지 않은 상태이면 TRUE를 리턴한다.
'Windows Developer > Oracle' 카테고리의 다른 글
[Oracle] 인덱스의 구조 (0) | 2011.01.08 |
---|---|
[Oracle] 인덱스 란? (0) | 2011.01.08 |
[Oracle] OUTER JOIN (1) | 2011.01.07 |
[Oracle] NON-EQUJOIN (0) | 2011.01.07 |
[Oracle] EquJoin (0) | 2011.01.07 |