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?
Segue abaixo a estrutura da tabela
*Estrutura das tabelas*
*Banco de dados online*
CREATE TABLE tabela(
id bigint,
user_id character varying(16),
recebimento timestamp without time zone);
*banco de dados historico*
CREATE TABLE historico_tabela(
id bigint,
user_id character varying(16),
recebimento timestamp without time zone);
*instrução select*
INSERT INTO historico_tabela
SELECT * FROM dblink ('host=remote user=reply password=123
dbname=database' ,
'SELECT * FROM tabela where recebimento <
date_trunc(''second'',timestamp ''now()'') - INTERVAL''30 day'' ')
AS resultado(id bigint, user_id character varying(16), recebimento
timestamp without time zone);
*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';
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;
return value2;
end;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral