Prezados,

Como eu faria o uso do "execute" para o meu caso?

Tenho alguns cenarios.
cenario 1: no momento em que sao "geradas" as tabelas temporarias.
cenario 2: no momento em que sao "usadas" as tabelas temporarias
(SELECT,UPDATE,INSERT)

Outra duvida, eu faço o seguinte no tcl:

spi_exec " SELECT .... INTO TEMP temp_tabela  FROM tabela1,tabela2 .... "

Aguem poderia dar um exemplo de com fazer no execute dentro de uma
funcao "tcl" ?

Obrigado.

2009/7/15 Osvaldo Kussama <osvaldo.kuss...@gmail.com>:
> 2009/7/15 jorge sanfelice <jorgesanfel...@gmail.com>:
>> Prezados,
>>
>> Estou com o seguinte erro:
>> Error: cache lookup failed for relation 251285909
>>
>> Pesquisando no google achei o seguinte:
>>
>>> Leia [1]. Isso ocorre porque o PostgreSQL faz cache do conteúdo das
>>> funções (inclusive o OID da tabela temporária referenciada), então ao
>>> executar novamente, ele tenta utilizar a tabela temporária antiga.
>>> Na versão 8.3 (próxima), isso não ocorrerá mais.
>>>
>>> [1] http://www.postgresql.org/docs/faqs.FAQ_brazilian.html#item4.19
>>>
>>
>> E la diz o seguinte:
>> Em versões do PostgreSQL < 8.3, PL/PgSQL armazena o conteúdo da
>> função, e o efeito indesejado é que se uma função PL/PgSQL acessa uma
>> tabela temporária, e aquela tabela é removida e criada novamente, e a
>> função é chamada novamente, a função irá falhar porque o conteúdo
>> armazenado da função ainda apontará para a tabela temporária antiga. A
>> solução é utilizar o EXECUTE para acesso a tabelas temporárias no
>> PL/PgSQL. Isto irá fazer com que a consulta seja avaliada toda vez.
>>
>> Esta versao que estou usando é a 8.2 (linux 64 mandriva).
>>
>> A sincronizacao é feita por um programa em "C" que esta agendado para
>> rodar no "cron" a cada 5 min, sempre é uma conexão nova.
>>
>> Dentro desse arquivo em uma determianada parte chama uma funcao que
>> uso pra sincronizacao em "tcl" que faz o seguinte:
>>
>>
>>     #CRIA UMA TABELA TEMPORARIA temp_tabela COM OS DADOS BASICOS P/ A
>> SINCRONIZACAO
>>     spi_exec " SELECT .... INTO TEMP temp_tabela  FROM tabela1,tabela2 .... "
>>
>> depois cria outra tabela temporaria:
>>
>> spi_exec "create temp table temp_xxx (....);
>>
>> e dados sao manipulados nessas tabelas.
>>
>>
>> Depois de executada essa funcao, fica uma tabela temporaria disponivel
>> para esse programa em "C" que usa ela posteriormente e faz select's,
>> etc....
>>
>> Em determinados momentos, tipo uma vez a cada hora, (essa
>> sincronizacao roda a cada 5 min) esta acontecendo o erro "cache lookup
>> failed for relation".
>>
>> Como posso resolver isso?
>>
>
>
> Utilize EXECUTE.
> http://www.postgresql.org/docs/8.2/interactive/plpgsql-statements.html#PLPGSQL-STATEMENTS-EXECUTING-DYN
>
> Osvaldo
> _______________________________________________
> 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

Responder a