declare

cursor user_cur

is select *

from my_user;

row_user my_user%rowtype;

begin

open user_cur;

loop

fetch user_cur into row_user;

exit when user_cur%notfound;

dbms_output.put_line(row_user.user_id||'----'||row_user.name||'----'||row_user.age);

end loop;

close user_cur;

end;declare

cursor row_user

is select *

from my_user;

type my_user_tab is table of my_user%rowtype;

/*

定义和表my_user行对象一致的集合类型cur_row_user,

用于存放批量得到的数据

*/

cur_row_user my_user_tab;

begin

open row_user;

loop

/*从结果集中提取数据,每次提取两行*/

fetch row_user bulk collect into cur_row_user limit 2;

/*遍历集合cur_row_user中的数据*/

for i in 1..cur_row_user.count loop

dbms_output.put_line(cur_row_user(i).user_id||'----'||cur_row_user(i).name||'----'||cur_row_user(i).age);

end loop;

exit when row_user%notfound;

end loop;

close row_user;

end;declare

cursor user_cur

is select *

from my_user;

type my_user_tab is table of my_user%rowtype;

/*

定义和表my_user行对象一致的集合类型cur_user_cur,

用于存放批量得到的数据

*/

cur_user_cur my_user_tab;

begin

open user_cur;

loop

/*从结果集中提取数据,每次提取两行*/

fetch user_cur bulk collect into cur_user_cur limit 2;

/*遍历集合cur_user_cur中的数据*/

for i in 1..cur_user_cur.count loop

dbms_output.put_line(cur_user_cur(i).user_id||'----'||cur_user_cur(i).name||'----'||cur_user_cur(i).age);

end loop;

exit when user_cur%notfound;

end loop;

close user_cur;

end;declare

cursor user_cur

is select *

from my_user;

begin

for cdr in user_cur

loop

dbms_output.put_line(cdr.user_id||'----'||cdr.name||'----'||cdr.age);

end loop;

end;

/*cursor for loop 不需要特别的申明变量,它可以提取出行对象类型数据*/declare

cursor user_cur

is select *

from my_user;

cdr my_user%rowtype;

begin

if user_cur%isopen then

fetch user_cur into cdr;

dbms_output.put_line(cdr.user_id||'----'||cdr.name||'----'||cdr.age);

else dbms_output.put_line('游标没有打开');

end if;

end;declare

cursor user_cur

is select *

from my_user;

cdr my_user%rowtype;

begin

open user_cur;

if user_cur%isopen then

loop

fetch user_cur into cdr;

exit when user_cur%notfound;

dbms_output.put_line(cdr.user_id||'----'||cdr.name||'----'||cdr.age);

end loop;

else dbms_output.put_line('游标没有打开');

end if;

end;declare

cursor user_cur

is select *

from my_user;

cdr my_user%rowtype;

begin

open user_cur;

loop

fetch user_cur into cdr;

if user_cur%found then

dbms_output.put_line(cdr.user_id||'----'||cdr.name||'----'||cdr.age);

else

dbms_output.put_line('游标没有打开');

exit;

end if;

end loop;

end;declare

/*这里的取值写在declare和begin中都可以*/

v_user_id my_user.user_id%type:='&v_user_id';

/*这里的v_user_id的类型写number和my_user.user_id%type都可以*/

cursor c_my_user(v_user_id my_user.user_id%type)

is select *

from my_user

where user_id=v_user_id;

cdr my_user%rowtype;

begin

open c_my_user(v_user_id);

loop

fetch c_my_user into cdr;

if c_my_user%found then

dbms_output.put_line(cdr.user_id||'----'||cdr.name||'----'||cdr.age);

else

dbms_output.put_line('游标没有打开');

exit;

end if;

end loop;

end;

原文:http://blog.51cto.com/matengbing/2044941

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐