Tabela temporaria Oracle 9i

8 respostas
U

Boa tarde pessoal, tudo bem?

Estou com o seguinte problema, tenho um select com paginação q uso em uma aplicação aqui no serviço…

so q esse select traz mais de 100.000 registro, e ta sendo enviavel usar esse esquema de paginação, ai eu pensei em usar tabela

temporaria:

fiz o seguinte, criei a tabela temporaria, fiz uma procedure para popular ela, no jsp eu disparo essa procedure e logo em seguida faço um select,

so q esse select nessa tabela nao me traz dado algum. Sera q tem algum esquema de eu popular essa tabela temporaria e depois consultar ela a partir do java?

Muito Obrigado!

8 Respostas

R

Oi,

-- Create table create global temporary table TABELA1 ( CAMPO1 number(10), CAMPO2 varchar2(50) ) on commit preserve rows; // VOCÊ COLOCOU ESSE DETALHE?

Lembre-se que tabelas temporárias existem por sessão, logo se o programa abrir uma sessão para executar uma procedure, fecha-la e depois abrir uma nova para consultar já era…tem que ser tudo na mesma sessão e usando on commit preserve rows para seu select fora da procedure “ver” os dados.

U

entao eu to ultilazando dessa maneira:

CallableStatement cs = Conexao.prepareCall("{CALL PRC_REL(?)}");
            cs.setString(1,filtros);
            
            cs.execute();
            
            query = "SELECT Count(1) FROM tmp_rel";
            
            ps_statement = Conexao.prepareStatement(query);

e ela esta com o

create global temporary table TMP_REL
(
 colunas omitidas....
)
on commit preserve rows;
R

Oi,

Então só lhe falta colocar a tabela com: on commit preserve rows; igual ao exemplo que te passei acima.

EDIT: Seu select é só para contar a quantidade de linhas? Por que não faz a procedure te devolver isso?

U

entao, eu ja tinha colocado isso…

create global temporary table TMP_REL  
(  
colunas omitidas....  
)  
on commit preserve rows;

Muito Obrigado

U

entao eu faço esse cont para usar na paginação, depois eu faço o select trazendo as colunas…

o q sera q pode ser???

R

ualamestre:
entao, eu ja tinha colocado isso…

create global temporary table TMP_REL  
(  
colunas omitidas....  
)  
on commit preserve rows;

Muito Obrigado

Não entendi, a tabela já tava preservando as linhas após o commit e mesmo assim seu select não encontra nada???

U

isso, apos executar essa proc ele nao traz nada no select e executando sql plus ele funciona normalmente… :frowning:

nao sei o q pode ser…

Obrigado…

R

ualamestre:
isso, apos executar essa proc ele nao traz nada no select e executando sql plus ele funciona normalmente… :frowning:

nao sei o q pode ser…

Obrigado…

Coloque o fonte completo da classe que faz esse procedimento, se no plus tá funcionando o problema deve ser em sua classe.

Criado 2 de outubro de 2008
Ultima resposta 2 de out. de 2008
Respostas 8
Participantes 2