Na versão 8.2 existe sim. Cheguei até a colocar nos servidores o 8.2 
para suprir essa minha carência, mas foi sem sucesso.

Daniel Cordeiro

joao cosme de oliveira junior escreveu:
> existe a seguinte sentenca?
>
> drop if exists??
> me lembro q nas versoes 8.1 se nao me engano para tras nao existia
>
> Em Terça 30 Janeiro 2007 23:16, Daniel Cordeiro escreveu:
>   
>> Olá Osvaldo,
>>
>> Já tinha procurado por execute para ver se criava não a tabela, porque
>> quem deve cria-la é o sistema web para recolher os dados da sessão, mas
>> as procedures, para que, acabe burlando esta situação (li essa dica em
>> algum lugar que não guardei o endereço). Deste modo, eu criaria uma
>> procedure que criaria dinamicamente outra procedure em tempo de execução
>> e toda vez que fosse solitado. Mas não obtive sucesso. ;(
>>
>> De qualquer forma, muito obrigado.
>>
>>
>> Daniel Cordeiro
>>
>> Osvaldo Rosario Kussama escreveu:
>>     
>>> Daniel Cordeiro escreveu:
>>>       
>>>> Olá Everaldo,
>>>>
>>>> Obrigado pela ajuda, infelismente não funcionou como eu esperava.
>>>>
>>>> Eu preciso saber se a tabela da minha sessão foi criado, mas o que
>>>> acontece é que a consulta que você me passou vai me mostrar a tabela
>>>> temporária de todas as sessões. E não somente a minha.
>>>>
>>>> Na verdade, o que acontece comigo é que como uso um sistema web com
>>>> um número muito alto de requisições, preciso manter minha conexão
>>>> persistente. A cada recarregamneto da tela, eu tenho que ver se a
>>>> tabela temporária existe (ou caso a conexão tenha se expirado), se
>>>> não exisitir, eu a crio e preencho com informações baśicas recolhidas
>>>> da sessão do PHP.
>>>>
>>>> Eu estava fazendo o trabalho sempre removendo e recriando as funções
>>>> com o comando DROP IF EXIST, só que eu não sabia que as procedures
>>>> quando são executadas na seção, são na verdade COMPILADAS no momento
>>>> da sua primeira execução, de tal forma que as informações da tabela
>>>> que ele extrai são registrados na procedure através dos OIDS. Como os
>>>> OIDS mudam porque eu sempre recriava a tabela temporária, mas a seção
>>>> não era expirada, não consequia realizar as operações que desejava
>>>> porque dava um erro, pois a procedure procurava os dados em um OID
>>>> inexistente.
>>>>         
>>> Utilize o EXECUTE para a criação da tabela temporária.
>>> http://www.postgresql.org/docs/8.2/interactive/plpgsql-statements.html#PL
>>> PGSQL-STATEMENTS-EXECUTING-DYN
>>>
>>> "Unlike all other commands in PL/pgSQL, a command run by an EXECUTE
>>> statement is not prepared and saved just once during the life of the
>>> session. Instead, the command is prepared each time the statement is
>>> run."
>>>
>>>       
>>>> Como as vezes eu não sei quando a seção foi expirada, não tem como eu
>>>> ficar a cada requisição removendo e recriando a tabela, mas o espaço
>>>> ocupado não é meu problema.
>>>>
>>>>
>>>> Muito obrigado pela sua ajuda.
>>>>
>>>> Daniel Cordeiro
>>>>
>>>> Evandro Ricardo Silvestre escreveu:
>>>>         
>>>>> Daniel,
>>>>>
>>>>> Tente o seguinte:
>>>>>
>>>>>  SELECT a.relname AS tabela
>>>>>            FROM pg_class a
>>>>>           WHERE (a.relkind = 'r') and relnamespace <> 2200
>>>>>
>>>>> Vai te retornar todas as tabelas temporárias.
>>>>>
>>>>> Sinceramente, não confio em fazer acesso a tabelas temporárias do
>>>>> jeito que deseja fazer! Particularmente prefiro apagar a tabela
>>>>> temporária sempre após o uso, para não ocupar espaço!
>>>>>
>>>>> Att
>>>>>
>>>>> Evandro
>>>>>
>>>>> Daniel Cordeiro wrote:
>>>>>           
>>>>>> Olá a todos mais uma vez,
>>>>>>
>>>>>> Além do problema das conexões, gostaria de saber como descubro  a
>>>>>> tabela temporária que esta ativa na seção corrente, pois gostaria
>>>>>> de gravar algumas informações nesta tabela temporária ( carregadas
>>>>>> da seção do PHP) para interagir diretamente através de gatilhos e
>>>>>> procedures que se baseam nestas informações ( e assim, tirando a
>>>>>> necessidade de se passar parâmetros para as procedures).
>>>>>>
>>>>>> Estou usando PostGreSQL 8.2, e a única  coisa que vi nesta versão é
>>>>>> como deletar a tabela com a comando DROP TABLE IF EXISTS.
>>>>>>
>>>>>> Procurando pelas tabelas do sistema, eu encontrei a tabela com o
>>>>>> sequinte comando:
>>>>>>
>>>>>> =#SELECT schemaname,tablename from pg_tables where tablename =
>>>>>> 'teste';
>>>>>>
>>>>>> O problema é que ela me retorna todas as tabelas temporárias de
>>>>>> todas as sessões ativas, da sequinte forma:
>>>>>>
>>>>>>      schemaname | tablename
>>>>>>     ------------+-----------
>>>>>>      pg_temp_1  | teste
>>>>>>      pg_temp_2  | teste
>>>>>>
>>>>>>
>>>>>> Gostaria de uma forma de descobrir se uma determinada tabela
>>>>>> temporária existe na MINHA SESSAO CORRENTE, para que, caso não
>>>>>> exista, eu possa cria-la na minha conexão persistente.
>>>>>>             
>>> []s
>>> Osvaldo
>>>
>>>
>>> _______________________________________________________ Yahoo! Mail -
>>> Sempre a melhor op��o para voc�! Experimente j� e veja as novidades.
>>> http://br.yahoo.com/mailbeta/tudonovo/
>>> ------------------------------------------------------------------------
>>>
>>> _______________________________________________
>>> Grupo de Usuários do PostgreSQL no Brasil
>>> Antes de perguntar consulte o manual
>>> http://pgdocptbr.sourceforge.net/
>>>
>>> Para editar suas opções ou sair da lista acesse a página da lista em:
>>> http://pgfoundry.org/mailman/listinfo/brasil-usuarios
>>>       
> _______________________________________________
> Grupo de Usuários do PostgreSQL no Brasil
> Antes de perguntar consulte o manual
> http://pgdocptbr.sourceforge.net/
>
> Para editar suas opções ou sair da lista acesse a página da lista em:
> http://pgfoundry.org/mailman/listinfo/brasil-usuarios


-- 
/* "O único lugar aonde o sucesso vem antes do trabalho é no dicionário". 
(Albert Einstein) */

+--------------------------------------------------------------------------+
| Daniel Cordeiro de Morais Neto                                           |
| [EMAIL PROTECTED]                                                            |
| Administrador de Redes                                                   |
| ADM Soluções em Informática LTDA                                         |
| www.admsi.com.br                                                         |
| F. (083)244-0757                                                         |
| Debian User - 453 - Sarge                                                |
| Gentoo User                                                              |
+--------------------------------------------------------------------------+ 

_______________________________________________
Grupo de Usuários do PostgreSQL no Brasil
Antes de perguntar consulte o manual
http://pgdocptbr.sourceforge.net/

Para editar suas opções ou sair da lista acesse a página da lista em:
http://pgfoundry.org/mailman/listinfo/brasil-usuarios

Responder a