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

Responder a