Connecting Tech Pros Worldwide Forums | Help | Site Map

Oracle REF CURSOR - 1

debasisdas's Avatar
Moderator
 
Join Date: Dec 2006
Location: Bangalore ,India
Posts: 7,508
#1   May 29 '07
SAMPLE CODE TO SHOW USE OF REFCURSOR
=======================================
EXAMPLE #1
----------------------
Expand|Select|Wrap|Line Numbers
  1. declare
  2. --declare the fer cursor.
  3. type my_ref_cur_typ is ref cursor;
  4. --declare a variable of rec cursor type.
  5. my_ref_cur my_ref_cur_typ;
  6. my_rec dept%rowtype;
  7. my_rec1 emp%rowtype;
  8.  
  9. begin
  10. --open the cursor variable to select from a table.
  11.    open my_ref_cur for select * from dept;
  12.    loop
  13.        fetch my_ref_cur into my_rec;
  14.      dbms_output.put_line(my_rec.deptno||' '||
  15.    my_rec.dname||' '||my_rec.loc);
  16.  
  17.  exit when my_ref_cur%notfound;
  18.     end loop;
  19. --close the cursor.
  20. close my_ref_cur;
  21.  
  22. --open the same cursor to select from another set of ecords.
  23.    open my_ref_cur for select empno,ename,job from emp;
  24.    loop
  25.        fetch my_ref_cur into my_rec1.empno,my_rec1.ename,my_rec1.job;
  26.       dbms_output.put_line(my_rec1.empno||' '||
  27.       my_rec1.ename||' '||my_rec1.job);
  28.        exit when my_ref_cur%notfound;
  29.     end loop;
  30. close my_ref_cur;
  31.  
  32. end;
  33.  
EXAMPLE #2
----------------------
Expand|Select|Wrap|Line Numbers
  1. DECLARE
  2. TYPE R1_CUR IS REF CURSOR;
  3. MYVAR1 R1_CUR;
  4. ename1 varchar(10);
  5. sall number;
  6. no number;
  7. begin
  8.  
  9. no:=&no;
  10.  
  11. if no=10 then
  12. open myvar1 for select sal from emp1 where empno=7900;
  13. fetch myvar1 into  sall;
  14. dbms_output.put_line(sall);
  15. close myvar1;
  16. else
  17. open myvar1 for select ename from emp1 where empno=7900;
  18.  
  19. fetch myvar1 into ename1;
  20.  
  21. dbms_output.put_line(ename1);
  22.  
  23. close myvar1;
  24. end if;
  25. end;
  26.  
  27.  
EXAMPLE #3
----------------------
Expand|Select|Wrap|Line Numbers
  1. declare
  2. type ordertype is record(
  3. orderno varchar2(5),
  4. odate date,
  5. vencode varchar2(5),
  6. ostatus char(1),
  7. del_date date);
  8.  
  9. type ordercur is ref cursor return order_master%rowtype;
  10. order_cv ordercur;
  11. order_rec ordertype;
  12.  
  13. begin
  14.  
  15. open order_cv for select 
  16. orderno,odate,vencode,ostatus,del_date from order_master
  17. where vencode='v001';
  18. loop
  19. fetch order_cv into order_rec;
  20. exit when order_cv%notfound;
  21. dbms_output.put_line('The values are '||order_rec.orderno|| order_rec.odate ||' '||order_rec.vencode||' '||order_rec.ostatus||' '||order_rec.del_date);
  22.  
  23. end loop;
  24. close order_cv;
  25. end;
  26.  
Also check Oracle REF CURSOR - 2

Last edited by debasisdas; Feb 12 '08 at 10:33 AM. Reason: added stuff



Reply