declare
--定义一个游标,【已经指明该游标的作用】
cursor myCur is select * from scott.emp;
--定义一个变量用于接收该游标的值
my myCur%rowtype;
begin
--打开游标
open myCur;
--提取游标的值放置在变量中
--每fetch一次取一行记录
fetch myCur into my;
dbms_output.put_line(my.ename);
--关闭游标
close myCur;
end;
declare
--定义一个游标,【已经指明该游标的作用】
cursor myCur is select * from scott.emp;
--定义一个变量用于接收该游标的值
my myCur%rowtype;
begin
--打开游标
open myCur;
fetch myCur into my;
--提取游标的值放置在变量中
--每fetch一次取一行记录
while myCur%found
loop
fetch myCur into my;
dbms_output.put_line(my.ename);
end loop;
--关闭游标
close myCur;
end;
declare
--定义一个游标,【已经指明该游标的作用】
cursor myCur is select * from scott.emp ;
--定义一个变量用于接收该游标的值
my myCur%rowtype;
begin
--打开游标
open myCur;
--提取游标的值放置在变量中
--每fetch一次取一行记录
loop
fetch myCur into my;
dbms_output.put_line(my.ename);
exit when myCur%notfound;
end loop;
--关闭游标
close myCur;
end;
drop table users;
create table users(
usid int ,
uname varchar2(20),
umoney int
)
select * from users;
insert into users values(1,'zs',1000);
insert into users values(2,'ls',1000);
declare
--定义一个游标,【已经指明该游标的作用】
cursor myCur is select * from users ;
--定义一个变量用于接收该游标的值
my myCur%rowtype;
begin
--打开游标
open myCur;
--提取游标的值放置在变量中
--每fetch一次取一行记录
loop
fetch myCur into my;
exit when myCur%notfound;
if my.usid mod 2=0 then
update users set umoney=umoney+500 where usid=my.usid;
commit;
end if;
end loop;
--关闭游标
close myCur;
end;
select * from users for update of usid;
select * from users;
begin
dbms_output.put_line(2 mod 2);
end;
declare
--定义一个游标,【已经指明该游标的作用】
cursor myCur is select * from users ;
begin
for my in myCur
loop
dbms_output.put_line(my.usid||my.uname);
end loop;
end;
begin
for my in (select * from users)
loop
dbms_output.put_line(my.usid||my.uname);
end loop;
end;