Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

FERNANDO DE OLIVEIRA SILV

Erro PLS-00049: Bad Bind variable 'NEW.TIPO_FUNCIONARIO'

Recommended Posts

Boa Tarde, estou com problema em uma trigger que ocorre o erro PLS-00049: Bad Bind variable 'NEW.TIPO_FUNCIONARIO', não sei se a utilização do if em questão esta correta. Poderiam me ajudar?

Abaixo o código da trigger.

 

create or replace trigger TG_INTEGRACAO_INSERT
after insert on integracao
for each row
declare
V_IDPESSOA NUMBER(9);
begin
INSERT INTO suricato.tbpessoa (nomepess)
VALUES (:NEW.NOM_PESSOA_FISIC);
SELECT suricato.Seq_Tbpessoa_Idpessoa.currval into V_IDPESSOA FROM DUAL;
IF
(:NEW.TIPO_FUNCIONARIO = 'C') THEN
:NEW.TIP0_FUNCIONARIO :='1';
END IF;
INSERT INTO suricato.Tbcolab (idpessoa,
Codiempr,
TIPOCOLA,
CODIMATR,
APELCOLA,
dataadmi,
SEXOCOLA,
DATANASC,
NUMEPIS)
VALUES (V_IDPESSOA,
:NEW.CDN_EMPRESA,
:NEW.TIPO_FUNCIONARIO,
:NEW.CDN_FUNCIONARIO,
:NEW.NOM_ABREV_PESSOA_FISIC,
:NEW.DAT_ADMIS_FUNC,
:NEW.COD_SEXO,
:NEW.DAT_NASCIMENTO,
:NEW.COD_PIS);
end TG_INTEGRACAO_INSERT;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Coloque a diretiva REFERENCING , pode ser isto

create or replace trigger TG_INTEGRACAO_INSERT
  after insert on integracao  
  REFERENCING OLD AS OLD NEW AS NEW
  for each row
declare

Compartilhar este post


Link para o post
Compartilhar em outros sites

O erro parece de síntaxe , mas a trigger é de after e você está alterando um valor da tabela, esta parte ao menos deveria estar em uma trigger de before.

 

Eu não faria esta substituição, criaria uma constraint na coluna TIPO_FUNCIONARIO para não aceitar o valor "C" e alteraria as aplicações.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.