Update em duas linhas ou mais Postgres

0 respostas
V

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?

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);
---------------------------------------------- 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 |
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';

OBRIGADA,

Criado 7 de abril de 2013
Respostas 0
Participantes 1