Fiz uma função mas está dando erro.
ERROR: query has no destination for result data
HINT: If you want to discard the results of a SELECT, use PERFORM instead.
CREATE OR REPLACE FUNCTION gera_id_inscricao (par2 integer)
RETURNS integer AS
$BODY$
DECLARE
v_linha int4 := 0;
BEGIN
SELECT id_inscricao FROM teste
WHERE id_agenda = par2;
GET DIAGNOSTICS v_linha = ROW_COUNT;
IF v_linha > 0 THEN
INSERT INTO teste (id_inscricao,id_agenda)
VALUES ((SELECT MAX(id_inscricao)+1 AS proximo from teste WHERE
id_agenda = par2), par2);
ELSE
INSERT INTO teste (id_inscricao,id_agenda)
VALUES ((SELECT COALESCE(MAX(id_inscricao), 1) AS proximo from
teste), par2);
END IF;
RETURN v_linha;
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE
COST 100;
chamando ela:
select gera_id_inscricao (1)
o que há de errado na função?
--------------------------------------------------------------------------------------------------------------------
Em 1 de setembro de 2010 10:31, Beto Lima <[email protected]> escreveu:
> Olá tenho uma dúvida e preciso criar uma função que retorne uma trigger.
> Gostaria da ajuda de alguém se possível
> A situação é a seguinte:
> Ex:
> Tabela teste;
> campos: id_inscricao integer, id_agenda integer.
>
> insert into teste (id_inscricao, id_agenda) values (1,1);
> insert into teste (id_inscricao, id_agenda) values (2,1);
> insert into teste (id_inscricao, id_agenda) values (3,1);
>
> insert into teste (id_inscricao, id_agenda) values (1,2);
> insert into teste (id_inscricao, id_agenda) values (2,2);
> insert into teste (id_inscricao, id_agenda) values (3,2);
>
> Notaram que o id_inscricao muda de acordo com o valor passado por id_agenda
> ?
> Quero que se a agenda for 1 então incremente o valor para o id_inscricao
> sequencialmente.
> Se for 2, a mesma coisa.
> Se for 3 ou 4 ou 5.... reinicie a contagem e comece do 1 novamente e assim
> por diante
>
> Obrigado
>
--
Att.
Beto Lima
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral