Ok Jota, obrigado. ficou assim essa parte. PERFORM id_inscricao FROM teste WHERE id_agenda = par2;
Uma pergunta: Essa minha função está tosca? não sou expert em pl estou indo pela minha lógica e ao mesmo tempo estudando sobre. Valeu Em 1 de setembro de 2010 12:00, <[email protected] > escreveu: > Send pgbr-geral mailing list submissions to > [email protected] > > To subscribe or unsubscribe via the World Wide Web, visit > > https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral > or, via email, send a message with subject or body 'help' to > [email protected] > > You can reach the person managing the list at > [email protected] > > When replying, please edit your Subject line so it is more specific > than "Re: Contents of pgbr-geral digest..." > > > Tópicos de Hoje: > > 1. Re: RES: OFF TOPIC - Teste (Euler Taveira de Oliveira) > 2. Problema com as inscrições nas listas pgbr-geral e pgbr-dev > (Leonardo Cezar) > 3. Gerar id de inscricao por valor de parâmetro passado (Beto Lima) > 4. Re: Gerar id de inscricao por valor de parâmetro passado > (Beto Lima) > 5. Re: Gerar id de inscricao por valor de parâmetro passado > (JotaComm) > > > ---------------------------------------------------------------------- > > Message: 1 > Date: Wed, 01 Sep 2010 10:05:31 -0300 > From: Euler Taveira de Oliveira <[email protected]> > Subject: Re: [pgbr-geral] RES: OFF TOPIC - Teste > To: Comunidade PostgreSQL Brasileira > <[email protected]> > Message-ID: <[email protected]> > Content-Type: text/plain; charset=ISO-8859-1 > > Leonardo Cezar escreveu: > > Estamos investigando o que houve neste período para entender a origem > > do problema e informamos pra voces assim que tivermos a resposta. > > > Um arquivo de configuração corrompido foi o problema. :( Portanto, alguns > inscritos "desapareceram" e alguns não-inscritos "apareceram". > > > -- > Euler Taveira de Oliveira > http://www.timbira.com/ > > > ------------------------------ > > Message: 2 > Date: Wed, 1 Sep 2010 10:08:15 -0300 > From: Leonardo Cezar <[email protected]> > Subject: [pgbr-geral] Problema com as inscrições nas listas pgbr-geral > e pgbr-dev > To: Comunidade PostgreSQL Brasileira > <[email protected]> > Cc: Organização do PostgreSQL Brasil > <[email protected]> > Message-ID: > <[email protected]> > Content-Type: text/plain; charset=ISO-8859-1 > > Sr(a)s, > > Há cerca de vinte dias tivemos problemas com um de nossos servidores > espelho das listas (pgbr-geral e pgbr-dev), devido a reformulação que > estamos fazendo com alguns servidores de cópia de segurança que > conseguimos com uma parceria recente e estão hospedados fisicamente > distante dos nossos servidores no Brasil. > > Uma restauração parcial da lista foi prejudicada e precisamos > recuperar informações a partir dos logs. > > O resultado disto é que alguns usuários da lista, inscritos próximo > deste período, podem não constar mais na lista de distribuição e > outros que excluíram seus cadastros durante esses dias podem ter sido > incluídos novamente. > > Medidas já foram tomadas para que não torne a acontecer. > > Pedimos desculpas pelo transtorno e certo de poder contar com a > colaboração de todos no sentido de informar aos conhecidos que > eventualmente tenham sido prejudicados com este incidente e q precisem > refazer seu cadastro. > > Forte abraço! > > -Moderador > -- > Leonardo Cezar > http://www.aslid.org.br > http://postgreslogia.wordpress.com > > > ------------------------------ > > Message: 3 > Date: Wed, 1 Sep 2010 10:31:14 -0300 > From: Beto Lima <[email protected]> > Subject: [pgbr-geral] Gerar id de inscricao por valor de parâmetro > passado > To: [email protected] > Message-ID: > <[email protected]> > Content-Type: text/plain; charset="iso-8859-1" > > 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 > -------------- Próxima Parte ---------- > Um anexo em HTML foi limpo... > URL: > http://listas.postgresql.org.br/pipermail/pgbr-geral/attachments/20100901/79c5459f/attachment.html > > ------------------------------ > > Message: 4 > Date: Wed, 1 Sep 2010 11:40:09 -0300 > From: Beto Lima <[email protected]> > Subject: Re: [pgbr-geral] Gerar id de inscricao por valor de parâmetro > passado > To: [email protected] > Message-ID: > <[email protected]> > Content-Type: text/plain; charset="iso-8859-1" > > 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 > -------------- Próxima Parte ---------- > Um anexo em HTML foi limpo... > URL: > http://listas.postgresql.org.br/pipermail/pgbr-geral/attachments/20100901/21214cf7/attachment-0001.htm > > ------------------------------ > > Message: 5 > Date: Wed, 1 Sep 2010 11:47:08 -0300 > From: JotaComm <[email protected]> > Subject: Re: [pgbr-geral] Gerar id de inscricao por valor de parâmetro > passado > To: Comunidade PostgreSQL Brasileira > <[email protected]> > Message-ID: > > <[email protected]<lk-n-yxqeu8r6dtoymknnpyjskq-a%[email protected]> > > > Content-Type: text/plain; charset="iso-8859-1" > > 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 > -------------- Próxima Parte ---------- > Um anexo em HTML foi limpo... > URL: > http://listas.postgresql.org.br/pipermail/pgbr-geral/attachments/20100901/c2aa6e46/attachment-0001.htm > > ------------------------------ > > _______________________________________________ > pgbr-geral mailing list > [email protected] > https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral > > > Fim da Digest pgbr-geral, volume 21, assunto 1 > ********************************************** > -- Att. Beto Lima
_______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
