------------------------------------simple cursor------------------------------------------------------------------
set serveroutput on;
declare
cursor c_emp is
select ename,deptno,hiredate from emp
where months_between(sysdate,hiredate)/12 > 30
order by hiredate desc;
begin
for c_var in c_emp
loop
dbms_output.put_line(c_var.ename||' '||c_var.deptno||' '||c_var.hiredate);
end loop;
end;
-------------------------------------using for loop sub-qury ------------------------------------------------------
set serveroutput on;
declare
begin
for c_var in (
select ename,deptno,hiredate from emp
where months_between(sysdate,hiredate)/12 > 30
order by hiredate desc)
loop
dbms_output.put_line(c_var.ename||' '||c_var.deptno||' '||c_var.hiredate);
end loop;
end;
----------------------using cursor dml operation through multiple rows---------------------------------
set serveroutput on;
declare
begin
for c_var in (
select empno,sal,ename,deptno,hiredate from emp
where months_between(sysdate,hiredate)/12 > 30
order by hiredate desc)
loop
update emp set sal=c_var.sal+100 where empno=c_var.empno;
--dbms_output.put_line(c_var.empno||' '||c_var.sal||' '||c_var.ename||' '||c_var.deptno||' '||c_var.hiredate);
end loop;
end;
/
select * from emp;
-----------------------------------displaying multiple data using ref_cursor----------------------------
create or replace
procedure ref_proc
(po_result out SYS_REFCURSOR )
as
begin
open po_result for
select empno,sal,ename,deptno,hiredate from emp
where months_between(sysdate,hiredate)/12 > 30
order by hiredate desc;
end;
-- -----------------displaying values from ref cursor using anonymous block---------------------
set serveroutput on;
set autoprint on;
var r refcursor;
DECLARE
PO_RESULT SYS_REFCURSOR;
BEGIN
REF_PROC(
PO_RESULT => :r
);
/* Legacy output:
DBMS_OUTPUT.PUT_LINE('PO_RESULT = ' || PO_RESULT);
*/
-- :PO_RESULT := PO_RESULT; --<-- Cursor
END;
set serveroutput on;
declare
cursor c_emp is
select ename,deptno,hiredate from emp
where months_between(sysdate,hiredate)/12 > 30
order by hiredate desc;
begin
for c_var in c_emp
loop
dbms_output.put_line(c_var.ename||' '||c_var.deptno||' '||c_var.hiredate);
end loop;
end;
-------------------------------------using for loop sub-qury ------------------------------------------------------
set serveroutput on;
declare
begin
for c_var in (
select ename,deptno,hiredate from emp
where months_between(sysdate,hiredate)/12 > 30
order by hiredate desc)
loop
dbms_output.put_line(c_var.ename||' '||c_var.deptno||' '||c_var.hiredate);
end loop;
end;
----------------------using cursor dml operation through multiple rows---------------------------------
set serveroutput on;
declare
begin
for c_var in (
select empno,sal,ename,deptno,hiredate from emp
where months_between(sysdate,hiredate)/12 > 30
order by hiredate desc)
loop
update emp set sal=c_var.sal+100 where empno=c_var.empno;
--dbms_output.put_line(c_var.empno||' '||c_var.sal||' '||c_var.ename||' '||c_var.deptno||' '||c_var.hiredate);
end loop;
end;
/
select * from emp;
-----------------------------------displaying multiple data using ref_cursor----------------------------
create or replace
procedure ref_proc
(po_result out SYS_REFCURSOR )
as
begin
open po_result for
select empno,sal,ename,deptno,hiredate from emp
where months_between(sysdate,hiredate)/12 > 30
order by hiredate desc;
end;
-- -----------------displaying values from ref cursor using anonymous block---------------------
set serveroutput on;
set autoprint on;
var r refcursor;
DECLARE
PO_RESULT SYS_REFCURSOR;
BEGIN
REF_PROC(
PO_RESULT => :r
);
/* Legacy output:
DBMS_OUTPUT.PUT_LINE('PO_RESULT = ' || PO_RESULT);
*/
-- :PO_RESULT := PO_RESULT; --<-- Cursor
END;
No comments:
Post a Comment