본문 바로가기
개발/sql

oracle sql 커서(암시적 커서,명시적 커서)

by 카앙구운 2015. 9. 24.
728x90
반응형

▶속성

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



암시적커서:SQL%ROWCOUNT


set serveroutput on  //dbms_output.put_line을 사용하기 위해서 

먼저 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를 실행한다.

set serveroutput on  //dbms_output.put_line을 사용하기 위해서 

먼저 set serveroutput on 을 써준다. 



declare

v_deptno dept.deptno%type;

v_dname  dept.dname%type;

v_loc dept.loc%type;


cursor dept_cursor is select * from dept;

begin

open dept_cursor;

for i in 1..4 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;

close emp_cursor;

end;

/




728x90
반응형

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

oracle sql  (0) 2015.09.25
oracle sql  (0) 2015.09.25
oracle sql  (0) 2015.09.24
oracel sql  (0) 2015.09.23
mysql,if,ifnull, format, update,이중 select  (0) 2015.08.17

댓글