Cursor for loop in Oracle Cursor for loop in Oracle sql sql

Cursor for loop in Oracle


To address issues associated with the second approach in your question you need to use

cursor variable and explicit way of opening a cursor and fetching data. It is not

allowed to use cursor variables in the FOR loop:

declare  l_sql varchar2(123);        -- variable that contains a query  l_c   sys_refcursor;        -- cursor variable(weak cursor).   l_res your_table%rowtype;   -- variable containing fetching data  begin  l_sql := 'select * from your_table';  -- Open the cursor and fetching data explicitly   -- in the LOOP.  open l_c for l_sql;  loop    fetch l_c into l_res;    exit when l_c%notfound;   -- Exit the loop if there is nothing to fetch.     -- process fetched data   end loop;  close l_c; -- close the cursorend;

Find out more


try this :

cursor v_sql isselect id, name from students;for rec in v_sql loop    -- do anythingend loop;

then no need to open, fetch or close the cursor.


You're not executing that sql string anywhere. Simply do this

v_sql := 'select id, name from students';open cur for v_sql;for rec in cur loop    -- do anythingend loop;

Or you can do this

cursor cur is select id, name from students;open cur;for rec in cur loop        -- do anythingend loop;

Or you can do this

for rec in (select id, name from students) loop    -- do anythingend loop