游标
静态游标
显式游标:定义、打开、提取数据、关闭
declare
cursor YHS0921_c(a_id in varchar2 default 1)
is select * from td_b_action where action_id=a_id;
type AC is record(
a_id td_b_action.action_id%type,
a_name td_b_action.action_name%type,
a_desc td_b_action.action_desc%type
);
ac_row AC;
begin
open YHS0921_c(100000023);
fetch YHS0921_c into ac_row;
while YHS0921_c%found loop
dbms_output.put_line('YHS'||ac_row.a_name);
fetch YHS0921_c into ac_row;
end loop;
close YHS0921_c;
end;
其中fetch YHS0921_c into ac_row;游标将一条结果放入变量中,然后就可以从变量中取出数据。
变量的字段要能存放结果,用ac_row YHS0921_c%rowtype,以游标的一行的字段作为这个变量的字段,更不易出错
循环,直到游标结果集中没有数据为止
FOR循环的游标
declare
cursor Y0921_cursor is
select * from td_b_action;
--where action_id='1';
begin
for r in Y0921_cursor loop
dbms_output.put_line(r.action_id);
end loop;
end;
for循环开始,cursor自动打开,循环结果,自动关闭
r变量存储了数据行
隐式游标
当执行一个SQL语句,oracle自动创建了一个游标的,默认名sql
属性:sql%found、sql%notfound、sql%rowcount。
这也是每个游标都有的属性
begin
for action in(select * from td_b_action)
loop
dbms_output.put_line(action.action_name);
end loop;
end;
用隐式游标,把结果集一条一条放入action变量中。
隐式游标的内容其实是select * from td_b_action
评论