关于PL/SQL

来源:百度知道 编辑:UC知道 时间:2024/05/15 12:17:06
用pl/sql语句执行循环更新操作,例如将1000条的数据中的a=1的值变为a=2,
现在想声明一个变量,用来记录更新了多少条,并且最后显示出来,应该怎么写?
DECLARE count number;
BEGIN
for cur in (select * from abc) loop
update test set a=cur.a+1' where id=cur.id;
end loop;
count:=SQL%ROWCOUNT;
DBMS_OUTPUT.put_line('一共更新了'||count||'条记录');
END;
/

上面的语句为什么会出错?
类似这种循环,想统计一共更新了多少行,应该怎么写?

oracle中的dml语句都是一个隐式游标,你只要利用游标的属性,就不难做到这一点了

--CREATE test TABLE
CREATE TABLE test_id(v_id INTEGER);
--insert test data
DECLARE v_id1 INTEGER;
BEGIN
FOR v_id1 IN 1..1000 LOOP
INSERT INTO test_id VALUES(1);
END LOOP;
END;
---insert end ;

DECLARE v_count INTEGER ;
BEGIN
UPDATE test_id SET v_id = 2;
v_count := SQL%ROWCOUNT;
DBMS_OUTPUT.put_line('一共更新了 '||v_count||' 条记录');
END;