隐式游标返回游标总数

第一个应用得知更新的行数
1、隐式游标在正常执行情况下更新的行数并不知道,可以根据SQL%ROWCOUNT得知更新的行数

SET SERVEROUTPUT ON
BEGIN
UPDATE student
SET first_name='D'
WHERE first_name like 'D%';
DBMS_OUTPUT.PUT_LINE(SQL%ROWCOUNT);
END;

2、SQL%COUNT也可以用来校验select得到的条数个数

SET SERVEROUTPUT ON
DECLARE 
v_city zipcode.city%type;
BEGIN
SELECT city INTO v_city
FROM zipcode
WHERE zip=07002;
IF SQL%ROWCOUNT = 1
 THEN
  DBMS_OUTPUT.PUT_LINE(v_city||' has a ZIP code of 07002');
ELSIF SQL%ROWCOUNT = 0
 THEN
  DBMS_OUTPUT.PUT_LINE('the ZIP code 07002 is not in the database');
ELSE
  DBMS_OUTPUT.PUT_LINE('Stop harassing me');
END;

第二个应用方式其实可以从异常角度出发:

SET SERVEROUTPUT ON
DECLARE 
v_city zipcode.city%type;
BEGIN
SELECT city INTO v_city
FROM zipcode
WHERE zip=07002;
EXCEPTION 
  WHEN NO_DATA_FOUND THEN
   DBMS_OUTPUT.PUT_LINE('the ZIP code 07002 is not in the database');
   DBMS_OUTPUT.PUT_LINE(v_city||' has a ZIP code of 07002');
 WHEN TOO_MANY_ROWS THEN
   DBMS_OUTPUT.PUT_LINE(SQL%ROWCOUNT || ',zip is not the only one');
END;

第三个应用中为了避免更新出错或者删除出错,可以根据更新或者删除的总数来判断我是否是误操作

BEGIN
  DELETE FROM ZIPCODE WHERE ZIP=07002;
  DBMS_OUTPUT.PUT_LINE('SUM OF DELETE DATA IS ' || SQL%ROWCOUNT);
  IF (SQL%ROWCOUNT < 10) THEN
    COMMIT;
  ELSE
    ROLLBACK;
  END IF;
EXCEPTION
  WHEN OTHERS THEN
    DBMS_OUTPUT.PUT_LINE('UPDATE DATA ERRORS');
END;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值