2013/11/8 Eduardo Rodrigues <[email protected]>
> 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
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral