Script da View retorna resultado mas quando eu fç sua chamada não

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
Tinho
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 317
Registrado em: Seg, 16 Nov 2009 4:50 pm
Localização: São Paulo - SP

Pessoal estou com uma dúvida, tenho uma view materializada que quando executo o seu script ela me retorna os resultados, porém quando faço sua chamada não me retorna nada, como isso é possível?

Já quebrei seus blocos de SELECT´s e teste todas as condições de filtros feitos nas tabelas, porém parece estar tudo ok!

Por isso, gostaria da opinião de vocês quanto esta dúvida e uma orientação de qual caminho seguir para encontrar uma solução?

Grato,
burga
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 232
Registrado em: Qui, 26 Nov 2009 1:05 pm
Localização: SP
Ricardo H. Tajiri

Uma view materializada não executa a consulta que a forma em tempo de execução. Então você deve estar vendo uma view qua ainda não teve seus dados atualizados com os dados mais atuais das tabelas.

Você tem que acertar o refresh da sua view materializada pra que possa visualizar os dados de acordo com o tempo que deseja.
Tinho
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 317
Registrado em: Seg, 16 Nov 2009 4:50 pm
Localização: São Paulo - SP

Perdoe-me a ignorância, mas a minha view já está com o parâmetro "REFRESH COMPLETE", o que devo fazer para atualizar os dados? Também não entendi:

Selecionar tudo


" Uma view materializada não executa a consulta que a forma em tempo de execução." 

Eu achava que o comportamento do SELECT dentro da view seria o mesmo que o executado fora da mesma, uma vez que eles lêem as mesmas tabelas?! A não ser que eu esteja me perdendo nos parâmetros declarados na criação da mesma.

Grato,
Tinho
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 317
Registrado em: Seg, 16 Nov 2009 4:50 pm
Localização: São Paulo - SP

Opa! Estava vendo em um artigo que peguei na internet e veja o que ele está citando:

Selecionar tudo


"... das Views Materializadas devem seguir um padrão delas, como, por exemplo, não utilizar cláusulas como UNION, UNION ALL, INTERSECT e MINUS. Se utilizar alguma dessas cláusulas a view não irá atualizar os dados... "

E no código da view que estou mexendo tenho um UNION ALL, porém com faço para fazer esta "atualização"?
burga
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 232
Registrado em: Qui, 26 Nov 2009 1:05 pm
Localização: SP
Ricardo H. Tajiri

A atualização você pode fazer, o que não dá é pra utilizar o fast refresh, só dá pra usar o complete refresh...

Dê uma estudada neste carinha aqui: dbms_mview.refresh
Tinho
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 317
Registrado em: Seg, 16 Nov 2009 4:50 pm
Localização: São Paulo - SP

Valeu!

Resolvido.

Selecionar tudo


  EXEC DBMS_MVIEW.REFRESH('VIEW');  

  
Abç.
nozes
Rank: Estagiário Sênior
Rank: Estagiário Sênior
Mensagens: 10
Registrado em: Qui, 23 Dez 2010 2:06 pm
Localização: Mesquita-RJ
Emanuel "Nozes" Castro
Analista Programador

Esas eu não sabia...vlw galera!
vocês matam a pau!
:twisted: :-o
Responder
  • Informação
  • Quem está online

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