oracle--游标

1 游标

显示游标:是有用户声明和操作的一种游标,通常用于查询结果集   步骤为:声明游标,打开游标,读取数据,关闭游标

隐式游标:sql语句执行时,oracle会自动创建一个隐式游标,这个游标是内存中处理该语句的工作区域,主要用于处理数据操纵语句如:update,delete语句

当然也可以用来select查询结果,在实际应用中,用来判断更新数据行数或删除行数

1.1    声明游标

cursor  cursor_name(输入参数1 ,输入参数2)(return  ret_type)

is select * from emp

 

cursor_name 游标名

输入参数为可选项,可多个

ret_type  返回值类型  可选

1.2  打开游标

open  cursor_name 参数

1.3  读取游标

fatch cursor_name  into variable

variable  变量,用来存储游标中的数据

1.4 关闭游标

close  cursor_name;

2  游标的属性

%found 布尔型的属性 如果sql影响到至少一行数据,该属性为true 否则为false

%notfound 布尔型属性 与%found属性相反

%rowcount 数字型属性 返回受sql影响的行数

%isopen 布尔型属性 判断游标是否打开,打开则为true 否则为false

 

应用:例如我需要给一个学校的所有院系和专业添加同一模块,手动点肯定又太慢了,所以直接后台操作

declare
cursor cur_test is                                --cur_test为游标名
select glyx, zydm from DM_XYZYB;    --这是我要查询的一张存储院系和专业的表     
begin
for c in cur_test loop    --遍历游标
insert into JW_JH_MKB
(MKDM,
NJ,
JHLX,
YXDM,
ZYDM,
ZYFX,
MKMC,
YQMS,
YQXF,
SFBX,
SFZYGCSMK,
KZFS)
values
(seq_jw_jh_mkb.nextval, 2014, '01',c.glyx,c.zydm,'0', '大学英语',
2, 4.0, 1, '0', '1');
end loop; --结束遍历,据说for循环结束遍历就直接关闭游标了,所以我没有关闭
commit; 提交

 

posted @ 2018-06-02 21:54  老街巷口熟睡的猫  阅读(856)  评论(0编辑  收藏  举报