Olá,

Em 1 de setembro de 2010 11:40, Beto Lima <[email protected]> escreveu:

> 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;
>

O erro está aqui. Ou você usa um SELECT INTO ou substitui este SELECT pelo
comando PERFORM.

Não observei a lógica.

>
>     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
>
>

[]s
-- 
JotaComm
http://jotacomm.wordpress.com
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a