커서
암시적커서
명시적커서
▶속성
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;
/
'개발 > 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 |
댓글