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,