ERRO: "LOOP" perdido no final da expressão SQL

2 respostas
juniorsatanas

Alguém pode da uma dica aqui ? não estou conseguindo ver !

ERRO:  "LOOP" perdido no final da expressão SQL
CONTEXTO:  compilação da função PL/pgSQL "pesquisa" perto da linha 4

********** Erro **********

ERRO: "LOOP" perdido no final da expressão SQL
SQL state: 42601
Contexto: compilação da função PL/pgSQL "pesquisa" perto da linha 4
CREATE OR REPLACE FUNCTION pesquisa()
 RETURNS trigger AS
 $BODY$
 DECLARE
	d record;
	BEGIN
	   FOR d IN SELECT *
	            FROM financeiro.clientes 
	            GROUP BY 
                       cli_cgcpf,
		       cli_celular,
                       cli_cgcpf,
                       cli_nome,
                       cli_end,
                       cli_cep,
                       cli_city,
                       cli_uf,
                       cli_contat,
                       cli_tipo,
                       cli_areativ,
                       cli_fone,
                       cli_fax,
		       cli_cxpost,
                       cli_email,
                       cli_insest,
                       cli_celular,
                       doido,
                       id_serial
	            HAVING count(*) > 1 limit 1;
	   loop
	      DELETE FROM financeiro.clientes  
	      WHERE    cli_cgcpf=d.cli_cgcpf AND
		       cli_celular=d.cli_celular AND
                       cli_cgcpf=d.cli_cgcpf AND
                       cli_nome=d.cli_nome AND
                       cli_end=d.cli_end AND
                       cli_cep=d.cli_cep AND
                       cli_city=d.cli_city AND
                       cli_uf=d.cli_uf AND
                       cli_contat=d.cli_contat AND
                       cli_tipo=d.cli_tipo AND
                       cli_areativ=d.cli_areativ AND
                       cli_fone=d.cli_fone AND
                       cli_fax=d.cli_fax AND
		       cli_cxpost=d.cli_cxpost AND
                       cli_email=d.cli_email AND
                       cli_insest=d.cli_insest AND
                       cli_celular=d.cli_celular AND
                       doido=d.doido AND
                       id_serial=d.id_serial;

	      INSERT INTO  financeiro.clientes  VALUES  (d.cli_cgcpf,
		       d.cli_celular,
                       d.cli_cgcpf,
                       d.cli_nome,
                       d.cli_end,
                       d.cli_cep,
                       d.cli_city,
                       d.cli_uf,
                       d.cli_contat,
                       d.cli_tipo,
                       d.cli_areativ,
                       d.cli_fone,
                       d.cli_fax,
		       d.cli_cxpost,
                       d.cli_email,
                       d.cli_insest,
                       d.cli_celular,
                       d.doido,
                       d.id_serial);
	   END loop;
	   RETURN;
	END;
	$BODY$
  LANGUAGE 'plpgsql' VOLATILE
  COST 100;
  ALTER FUNCTION pesquisa() OWNER TO postgres;

2 Respostas

E

http://pgdocptbr.sourceforge.net/pg80/plpgsql-control-structures.html#PLPGSQL-CONTROL-STRUCTURES-LOOPS
indica que não há um “;” antes da instrução “LOOP”

juniorsatanas

Obrigado !

Criado 25 de julho de 2010
Ultima resposta 26 de jul. de 2010
Respostas 2
Participantes 2