Erro: Error: PLS-00103: Encountered the symbol "AFTER&q

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
mariogus
Rank: Analista Sênior
Rank: Analista Sênior
Mensagens: 157
Registrado em: Sex, 30 Nov 2007 1:17 pm
Localização: Porto Alegre - RS

Segue o erro...o que pode ser?

Continuação do erro:

if
Line: 35
Text: from cm.pessoa@cmnet


Trigger :

Selecionar tudo

CREATE OR REPLACE TRIGGER TEST_TRIG_COMPOUND
FOR UPDATE
ON cm.pessoa
COMPOUND TRIGGER

/* Declaration Section*/
v_qtd                     number:=0;
v_numdocumento pessoa.numdocumento%type;
AFTER EACH ROW IS
BEGIN

 ---Inclui apenas quando possuir cgc/cpf

   IF :new.numdocumento is not null then

      if upper(trim(:new.nome))=upper(trim(:new.razaosocial)) THEN

         INSERT INTO cm_pessoa@itg(ID_PESSOA, DT_INSERCAO)
              VALUES(:new.idpessoa, sysdate);

      else
         --se for diferente, verificar se tem mais de um registro com o mesmo numdocumento,
         --e nome=razao social, caso não tenha, é porque o cadastro foi feito "errado" nome diferente da razão social
		 
         v_numdocumento :=:new.numdocumento;
        

             
END AFTER EACH ROW;
AFTER STATEMENT IS
BEGIN

select count(*)
                into  v_qtd
               from cm.pessoa
             where trim(numdocumento)=v_numdocumento
                and trim(upper(nome))=trim(upper(razaosocial));

             --se não houver registro com o mesmo numdocumento e razão social igual, então leva para o corp.pessoa
			 
             if v_qtd =0 then
                  INSERT INTO cm_pessoa@itg(ID_PESSOA, DT_INSERCAO)
                  VALUES(:new.idpessoa, sysdate); 
             end if;
			 
END AFTER STATEMENT;

END TEST_TRIG_COMPOUND;
/
paulochagas
Moderador
Moderador
Mensagens: 86
Registrado em: Qua, 15 Mar 2006 2:46 pm
Localização: São Paulo - SP
Paulo Chagas Filho
__________________

Analista Funcional / Desenvolvedor Oracle EBS
MSN - paulochagas@hotmail.com
Gtalk - pachafi@gmail.com
Skype - paulochagas

Selecionar tudo


CREATE OR REPLACE TRIGGER TEST_TRIG_COMPOUND
FOR UPDATE
ON cm.pessoa
COMPOUND TRIGGER

/* Declaration Section*/
v_qtd                     number:=0;
v_numdocumento pessoa.numdocumento%type;
AFTER EACH ROW IS
BEGIN

 ---Inclui apenas quando possuir cgc/cpf

   IF :new.numdocumento is not null then

      if upper(trim(:new.nome))=upper(trim(:new.razaosocial)) THEN

         INSERT INTO cm_pessoa@itg(ID_PESSOA, DT_INSERCAO)
              VALUES(:new.idpessoa, sysdate);

      else
         --se for diferente, verificar se tem mais de um registro com o mesmo numdocumento,
         --e nome=razao social, caso não tenha, é porque o cadastro foi feito "errado" nome diferente da razão social
      
         v_numdocumento :=:new.numdocumento;
      ---###  adiciona um end If aqui ####
      end if;
   ---###  e aqui   ####
   end if;

       

             
END AFTER EACH ROW;
AFTER STATEMENT IS
BEGIN

select count(*)
                into  v_qtd
               from cm.pessoa
             where trim(numdocumento)=v_numdocumento
                and trim(upper(nome))=trim(upper(razaosocial));

             --se não houver registro com o mesmo numdocumento e razão social igual, então leva para o corp.pessoa
         
             if v_qtd =0 then
                  INSERT INTO cm_pessoa@itg(ID_PESSOA, DT_INSERCAO)
               --#### tenta remover variavel bind do after statement, ela não é suportada 
                  VALUES(:new.idpessoa, sysdate);
             end if;
         
END AFTER STATEMENT;

END TEST_TRIG_COMPOUND;
/

Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 4 visitantes