Problemas iReport + tabelas temporárias

Este forum é destinado a perguntas relacionadas a Oracle, mas que não se enquadram nos forums acima. Aqui serão tratadas também sobre outras tecnologias da oracle, como o Workflow, BPEL, Spatial, OCS, etc.
Responder
Avatar do usuário
NightSpy
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 49
Registrado em: Ter, 09 Set 2008 4:18 pm
Localização: SP

Tenho um relatório que, quando rodado para buscar dados de 3 tabelas funciona normal, porém, quando rodado da mesma forma com 3 tabelas temporárias(mesmos campos, mesmos dados, enfim, mesma estrutura das 3 tabelas de testes) não funciona satisfatoriamente. Trás apenas um registro(o primeiro) e mesmo assim incompleto.

PS: As tabelas temporárias estão com ON COMMIT PRESERVE ROWS.

Aguardo dicas do que pode estar acontecendo.

Abraços.
Avatar do usuário
stcoutinho
Moderador
Moderador
Mensagens: 850
Registrado em: Qua, 11 Mai 2011 5:15 pm
Localização: são Paulo - SP

Olá NightSpy,

Você mencionou que está executando um relatório que acessa tabelas temporárias (GLOBAL TEMPORARY).

Os dados de uma tabela temporarária são acessados exclusivamente pela da sessão que carregou os dados nela.

Outras sessões não conseguem visualizar os dados armazenados por esta sessão que fez a carga. E se esta sessão foi encerrada, os dados carregados se perdem.

Para que seu relatório apresente os dados das tabelas temporárias, ele deve usar a MESMA sessão SQL que carregou os dados nas tabelas temporárias. Se a sessão não for a mesma, seu relatório jamais irá visualizar os dados.

Você mencionou IREPORTS no cabeçalho da thread. Neste caso, você tem certeza que todo o processo de carga e select para o relatório são executados pela MESMA sessão?

Abraços,

Sergio Coutinho
Avatar do usuário
NightSpy
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 49
Registrado em: Ter, 09 Set 2008 4:18 pm
Localização: SP

Olá Serginho, desculpe este "hiato" para responder...

Mas você acertou, era problema de sessão... eu achei que o preserve rows iria me garantir isso, porem me enganei.
Mas acabei fazendo e na produção onde é feito a chamada é garantida a sessão e rolou numa boa.

Obrigado cara.
Avatar do usuário
stcoutinho
Moderador
Moderador
Mensagens: 850
Registrado em: Qua, 11 Mai 2011 5:15 pm
Localização: são Paulo - SP

Olá NightSpy,

Que bom que conseguiu resolver o seu problema !

A única coisa que PRESERVE ROWS irá garantir é que os dados continuarão disponíveis (na tabela temporária) após um COMMIT. E isso somente enquanto a sessão SQL*Plus que carregou os dados continuar existindo.

Abraços,

Sergio
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 8 visitantes