Matheus, funcionou perfeitamente o modo de escape que voce indicou. Obrigado
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