본문 바로가기
개발/sql

oracle sql 암시적 커서,명시적 커서,loop

by 카앙구운 2015. 10. 5.
728x90
반응형



커서

암시적커서

명시적커서


▶속성

SQL%ROWCOUNT:수행된 SQL 문의 결과로서 나온 행의 수를 반환한다.



@암시적커서:SQL%ROWCOUNT


set serveroutput on

declare

v_deptno number :=&del_no;

emp_aa varchar2(40);

begin

delete from emp where deptno =v_deptno;

dbms_output.put_line(SQL%ROWCOUNT ||'명이 삭제되었습니다.');

end;

/

-------------------------------------------------------------------


@명시적 커서

(1)dept 테이블을 이용한 커서를 만들고 loop를 실행한다.


declare

v_deptno dept.deptno%type;

v_dname  dept.dname%type;

v_loc dept.loc%type;

v_cnt number(8);

cursor dept_cursor is select * from dept;

begin

select count(*) into v_cnt from dept;

open dept_cursor;

for i in 1..v_cnt loop

fetch dept_cursor into v_deptno, v_dname, v_loc;

dbms_output.put_line(v_deptno||' '|| v_dname ||' '|| v_loc);

end loop;

dbms_output.put_line(dept_cursor%rowcount|| '개 행 출력');

close dept_cursor;

end;

/


------------------------------------------------------------------

(2)emp테이블에서 사원번호, 이름,급여를 5~10행을 출력


declare

v_empno emp.empno%type;

v_ename emp.ename%type;

v_sal emp.sal%type;

v_cnt number(8);

v_rn number(8);

cursor emp_cursor is select *from (select rownum as v_rn,empno,ename,sal from emp  order by empno asc) where v_rn>=5 and v_rn<=10;

begin

select count(*) into v_cnt from (select *from (select rownum as v_rn,empno,ename,sal from emp) where v_rn>=5 and v_rn<=10);

open emp_cursor;

for i in 1..v_cnt loop

fetch emp_cursor into v_rn, v_empno,v_ename,v_sal;

dbms_output.put_line(v_rn||' '|| v_empno||' '|| v_ename||' '|| v_sal);

end loop;

dbms_output.put_line(emp_cursor%rowcount|| '개 행 출력');

close emp_cursor;

end;

/

728x90
반응형

'개발 > sql' 카테고리의 다른 글

oracle sql function, dual,upper  (0) 2015.10.06
oracle sql cursor update,delete, 무결성 제약조건  (0) 2015.10.06
oracle sql  (0) 2015.10.05
oracle sql  (0) 2015.10.05
oracle test 및 답  (0) 2015.09.29

댓글