隐式游标:一次只能返回一行结果(不需要定义,默认自动建立)
显式游标: 需要开发人员提前定义,可以通过循环的方式处理游标里的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;
时间: 2024-10-16 09:35:22