2月5日 Oralce游标定义、游标变量、游标循环的实际例子
--给销售订单加上行号 --同一个单据号(djh)之内,行号(rowno)按照10的步长来编号 --新单据号,行号要重新从10开始
declare
--本例子演示了Oralce游标定义、Oracle游标变量、Oracle游标循环
--以及在游标里面更新数据库的技巧
cursor cc is select
nno,djh,rowno
from temp_so order by nno;
--定义游标变量
ccrec
cc%rowtype; --定义自己的变量
irowno number;
idjh varchar2(50); begin
--打开游标
open cc;
--提取一行数据到ccrec中
fetch cc into ccrec;
--判断是否提取到值,没取到值就退出
--取到值cc%notfound 是false
--取不到值cc%notfound 是true
idjh := ccrec.djh;
irowno:=10;
loop --loop循环
--exit when (cc%notfound or cc%rowcount =300);
exit when (cc%notfound);
if (idjh =
ccrec.djh) then
update temp_so set temp_so.rowno = irowno where
temp_so.nno = ccrec.nno;
--dbms_output.put_line(cc%rowcount||'
'||ccrec.djh||'
'||idjh||'
'||irowno);
else
irowno:=10;
idjh :=
ccrec.djh;
update temp_so set temp_so.rowno = irowno where temp_so.nno =
ccrec.nno;
-- dbms_output.put_line(cc%rowcount||'
'||ccrec.djh||'
'||idjh||'
'||irowno);
end if;
fetch cc into ccrec;
irowno:=irowno+10; end loop;
close cc;
commit; end;
<!-- 正文结束 -->
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/23795921/viewspace-1117522/
,如需转载,请注明出处,否则将追究法律责任。