为了防止查询语句有多条返回值报错,所有选择游标。 create or replace procedure p_test is begin FOR A IN (select fid from emp) LOOP update test set d='0' where fid=A.fid END LOOP; commit; end;
create or replace procedure p_test is begin FOR A IN (select fid from emp) LOOP update test set d='0' where fid=A.fid END LOOP; commit; end;假如 select fid from emp 返回的是多个ID值, update test set d='0' where fid=A.fid 这句还适用吗?是否要改成update test set d='0' where fid in(A.fid)
如果你能确保只返回一个值,可以这样赋值:select fid into A from emp; A 要先定义。
适用,因为用了FOR loop循环。循环的执行UPDATE
是不是就是说 假如select 出了fid值为(1,2,3,4)四个值。 通过loop循环 第一次运行到 update test set d='0' where fid=A.fid 中a.fid为:1 第二次运行到 update test set d='0' where fid=A.fid 中a.fid为:2 第三次运行到 update test set d='0' where fid=A.fid 中a.fid为:3 第四次运行到 update test set d='0' where fid=A.fid 中a.fid为:4
begin
FOR A IN (select fid from emp) LOOP
update test set d='0' where fid=A.fid
END LOOP;
commit;
end;假如 select fid from emp 返回的是多个ID值, update test set d='0' where fid=A.fid 这句还适用吗?是否要改成update test set d='0' where fid in(A.fid)
A 要先定义。
通过loop循环 第一次运行到 update test set d='0' where fid=A.fid 中a.fid为:1
第二次运行到 update test set d='0' where fid=A.fid 中a.fid为:2
第三次运行到 update test set d='0' where fid=A.fid 中a.fid为:3
第四次运行到 update test set d='0' where fid=A.fid 中a.fid为:4