隐式游标:一次只能返回一行结果(不需要定义,默认自动建立)
显式游标: 需要开发人员提前定义,可以通过循环的方式处理游标里的sql语句,返回多行结果
隐式游标的属性:
sql%rowcout 统计在游标中处理的记录数
sql%found 如果在游标中能找到符合条件的一条记录,结果为true
sql%notfound 如果在游标中能找不到符合条件的一条记录,结果为true
sql%isopen 判断游标是否打开,在隐式游标中默认游标自动打开
1.隐式游标:
sql%notfound 如果在游标中能找不到符合条件的一条记录,结果为true
SQL> declare
2
3 v_id t1.id%type;
4
5 begin
6
7 v_id :=10;
8
9 update t1 set id=20 where id=v_id;
10 if sql%notfound then
11 insert into t1(id) values (v_id);
12 commit;
13 end if;
14 end;
2. sql%found 如果在游标中能找到符合条件的一条记录,结果为true
SQL> declare
2
3 v_id t1.id%type;
4
5 begin
6
7 v_id :=10;
8
9 delete from t1 where id = v_id;
10
11 if sql%found then
12 dbms_output.put_line('T1 recorder is delete !');
13 commit;
14 end if;
15 end;
3.sql%rowcout 统计在游标中处理的记录数
SQL> declare
2
3 v_id t1.id%type;
4
5 begin
6
7 v_id :=10;
8
9 insert into t1 (id) values (v_id);
10 delete from t1 where id = v_id;
11
12 if sql%found then
13 dbms_output.put_line('T1 recorder is delete !');
14 dbms_output.put_line('T1 recorders '||sql%rowcount||' rows was deleted !'); //统计删除的行数
15 commit;
16 end if;
17 end;