2013/11/12 Eduardo Rodrigues <edua...@ookle.com.br> > Matheus, > > funcionou perfeitamente o modo de escape que voce indicou. Obrigado > > Opa. Tranquilo.. =D
> > Em 8 de novembro de 2013 22:14, Eduardo Rodrigues < > eduardo.rodrig...@wisetelecom.com.br> escreveu: > > Matheus, >> Obrigado pela dica irei testar o que você informou no email. >> Em 08/11/2013 17:23, "Matheus de Oliveira" <matioli.math...@gmail.com> >> escreveu: >> >>> >>> >>> >>> 2013/11/8 Eduardo Rodrigues <edua...@ookle.com.br> >>> >>>> Pessoal, >>>> >>>> utilizo o PostgreSQL 9.2 e quero replicar o conteúdo de uma tabela, >>>> levando em consideração a coluna recebimento que eh do tipo timestamp. No >>>> banco de dados online ficara armazenado apenas o período dos últimos 30 >>>> dias, o que for maior do que 30 dias tenho que armazenar em um outro banco >>>> de dados. Entao pensei em utilizar o dblink, criei uma instrução SQL que >>>> funciona normalmente. Mas quando a executo em uma function ela compila mas >>>> no momento de executar a mesma retorna erro, acredito que seja uma caso de >>>> escape que nao estou conseguindo solucionar. Sera que alguém pode me >>>> ajudar? >>>> >>>> (...) >>>> >>>> *function* >>>> >>>> >>>> CREATE OR REPLACE FUNCTION teste_reply() >>>> RETURNS int4 AS >>>> $BODY$ >>>> declare >>>> condicao_where character varying(255); >>>> value2 int4; >>>> begin >>>> >>>> condicao_where := 'SELECT * FROM tabela where recebimento < >>>> date_trunc('second',timestamp 'now()') - INTERVAL '30 day'; >>>> >>>> >>> Nessa parte aqui (^^) você precisa fazer o escape das aspas simples, ou >>> então usar operador dólar: >>> >>> condicao_where := 'SELECT * FROM tabela where recebimento < >>> date_trunc(''second'', now()) - INTERVAL ''30 day'' '; >>> >>> ou >>> >>> condicao_where := $query$ SELECT * FROM tabela where recebimento < >>> date_trunc('second', now()) - INTERVAL '30 day' $query$; >>> >>> >>> SELECT * FROM dblink('host=remote user=reply password=123 >>>> dbname=database', condicao_where) >>>> AS resultado(id bigint, user_id character varying(16), recebimento >>>> timestamp without time zone);) INTO value2; >>>> >>> >>> Esta parte também parece ter um erro, você está fazendo um "SELECT * " >>> mas jogando apenas numa variável "value2" que é um inteiro, você deveria >>> usar várias variáveis ou ainda um tipo RECORD. >>> >>> >>> >>>> return value2; >>>> >>>> end; >>>> $BODY$ >>>> LANGUAGE plpgsql VOLATILE >>>> COST 100; >>>> >>> >>> >>> Atenciosamente, >>> -- >>> Matheus de Oliveira >>> Analista de Banco de Dados >>> Dextra Sistemas - MPS.Br nível F! >>> www.dextra.com.br/postgres >>> >>> >>> _______________________________________________ >>> pgbr-geral mailing list >>> pgbr-geral@listas.postgresql.org.br >>> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral >>> >>> >> _______________________________________________ >> pgbr-geral mailing list >> pgbr-geral@listas.postgresql.org.br >> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral >> >> > > _______________________________________________ > pgbr-geral mailing list > pgbr-geral@listas.postgresql.org.br > https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral > > -- Matheus de Oliveira Analista de Banco de Dados Dextra Sistemas - MPS.Br nível F! www.dextra.com.br/postgres
_______________________________________________ pgbr-geral mailing list pgbr-geral@listas.postgresql.org.br https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral