Update em duas linhas ou mais Postgres

Boa tarde,

Fiz uma funçao para alterar diretores (mgr) de um funcionario, soh que minha funçao esta atualizando somente 1 linha. Quando tenho 2 linhas para serem atualizadas, da erro.
Alguém me ajuda?

[code]CREATE TABLE emp
(
empno int4 NOT NULL,
ename varchar(30) NOT NULL,
job varchar(30) NOT NULL,
deptno int4 NOT NULL,
mgr int4,
);

ALTER TABLE emp
ADD CONSTRAINT “PKemp” PRIMARY KEY(empno);[/code]


empno | ename | job | deptno | mgr |
-------±--------±----------±-------±-----+
7839 | KING | P | 10 | |
7698 | BLAKE | M | 30 | 7839 |
7900 | JAMES | CL | 30 | 7698 |
7990 | JOHNSON | S | 30 | 7698 |
7654 | MARTIN | S | 30 | 7698 |
7844 | TURNER | S | 30 | 7900 |

[code]CREATE OR REPLACE FUNCTION update(diretorNovo IN INTEGER , diretorVelho IN INTEGER)
RETURNS VOID
AS $$
DECLARE
total integer:=0;
linha emp%rowtype;

–cursor
modificar CURSOR IS SELECT * FROM emp WHERE mgr = diretorVelho;

BEGIN
total:=0;
OPEN modificar;

IF (SELECT empno FROM emp WHERE diretorNovo != empno) THEN
RAISE NOTICE ‘Funcionario nao existe’;
END IF;

LOOP
FETCH modificar INTO linha;
EXIT WHEN NOT FOUND;

UPDATE emp SET mgr=diretorNovo WHERE mgr=linha.mgr;

–Contador
total:= total+ 1;
IF total> 0 THEN
RAISE NOTICE ‘Registros Atualizados.: %’, V_TOT_UPD;
END IF;

END LOOP;
CLOSE modificar;
END;
$$ LANGUAGE ‘plpgsql’;
[/code]

OBRIGADA,