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
