为了防止查询语句有多条返回值报错,所有选择游标。
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;

解决方案 »

  1.   

    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)
      

  2.   

    如果你能确保只返回一个值,可以这样赋值:select fid into A from emp;
    A 要先定义。
      

  3.   

    适用,因为用了FOR loop循环。循环的执行UPDATE
      

  4.   

    是不是就是说  假如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