2009/6/10 emerson hermann <[email protected]>:
> Ola Pessoal,
> Estou desenvolvendo uma store procedure que usa algumas tabelas
> temporarias criadas por outra store procedure, porem queria ter
> certeza de pegar a tabela temporaria correta.
>
> Como obter o OID da tabela temporaria no instante da criacao da mesma?
> Exemplo:
>
> CREATE TEMPORARY TABLE tb_temp01 (
>  id integer,
>  config varchar(200),
>  diretorio varchar(200)
> ) ON COMMIT PRESERVE ROWS;
>
> Tenho ciencia de que existe dessa forma porem funciona com linhas e
> nao com tabelas:
> CREATE TEMPORARY TABLE tb_temp01 (
>  id integer,
>  config varchar(200),
>  diretorio varchar(200)
> ) WITH OIDS
>  ON COMMIT PRESERVE ROWS;
>
> Usando o catalogo do postgres tenho essa informacao
> SELECT oid, * FROM pg_class WHERE relname = 'tb_temp01';
>
> Porem preciso do OID no momento da criacao da tabela, como fazer ?
>



Creio que existe uma pequena confusão com a cláusula WITH OIDS (ou
WITH OIDS=TRUE).
Esta cláusula se refere às *linhas* da tabela terem um oid atribuído a
cada uma delas e não à tabela. A tabela sempre terá.

Para obter o que deseja utilize o comando:
SELECT oid FROM pg_class WHERE relname = 'tb_temp01';
logo após a criação da tabela (como você citou acima).

Osvaldo
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a