Ola,
fiz uma funçao para atualizar o campo Diretor (mgr) de uma tabela.
Se eu tento trocar o valor do DiretorNovo por un diretor que NAO EXISTE da um erro - NORMAL pois o campo mgr é FK do campo empno.
Mas eu gostaria de enviar uma mensagem compreensivel: FUNCIONARIO NAO EXISTE por exemplo, e nao aquela mensagem do sistema.
Tentei isso mais nao deu certo:[b]
IF (SELECT empno FROM emp WHERE diretorNovo != empno) THEN
RAISE NOTICE ‘Funcionario nao existe’;
END IF;
COMO DEVO FAZER???
[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,