Re: [oracle_br] Materialized View ????

2005-07-17 Por tôpico Rogerio Ribeiro

Seguinte Jonathan,

a view materializada com atualização on commit só pode ser criada com uma única 
tabela. Alem disso deve ser criado um log de view materializada para a tabela 
em questão.

Atenciosamente,
Rogério Nascimento

Jonathan Barbosa <[EMAIL PROTECTED]> escreveu:
Olha que interessante!! Alguém poderia me explicar as regras usadas pelo 
Oracle nas views materializadas ON COMMIT?

SQL> CREATE MATERIALIZED VIEW TESTE2
  2  refresh complete on commit
  3AS
  4  select last_name from employees;
select last_name from employees
  *
ERROR at line 4:
ORA-12054: cannot set the ON COMMIT refresh attribute for the materialized 
view

SQL>  CREATE MATERIALIZED VIEW TESTE2
  2   refresh complete on commit
  3 AS
  4   select e.last_name from employees e,departments d;

Materialized view created.



- Original Message - 
From: "Jonathan Barbosa" <[EMAIL PROTECTED]>
To: 
Sent: Friday, July 15, 2005 4:52 PM
Subject: Re: [oracle_br] Materialized View 


> Não sei porque o Oracle não está permitindo a criação desta view
> materializada, talvez seja devido ao número de tabelas ou outra coisa que
> não saberia te explicar. Podes usar a opção ON DEMAND ou START WITH e NEXT
> para especificar um tempo de atualização.
> Agora,  esta consulta retorna um número enorme de dados como em data
> warehouses? Pelo número de tabelas especificadas a opção on COMMIT poderá
> até trazer problemas de performance se alguma das tabelas mencionadas é
> acessada com uma certa frequência. Estes dados serão requeridos com que
> frequência?As tabelas bases são atualizadas de quanto em quanto tempo?
>
>
> Jonathan
>
>
>
> - Original Message - 
> From: "Welvis Douglas Silva Moreto" <[EMAIL PROTECTED]>
> To: 
> Sent: Friday, July 15, 2005 1:54 PM
> Subject: Re: [oracle_br] Materialized View 
>
>
>>
>>
>> ELE DA UM O SEGUINTE ERRO QUANDO USO ESSA OPÇÃO.
>>
>> ORA-12054: cannot set the ON COMMIT refresh attribute
>> for the materialized view
>>
>> ESSE É O SELECT QUE ESTOU USANSDO
>>
>> SELECT PROD_ORIG.ID_PRODUTO ID_PRODUTOORIG,
>>
>> DECODE(PCON.ID_PRODUTODESTINO,NULL,PROD_ORIG.ID_PRODUTO,PCON.ID_PRODUTODESTINO)
>> ID_PRODUTODEST,
>>
>> DECODE(PCON.ID_PRODUTODESTINO,NULL,1,PCON.PC_CONVERSAO)
>>PC_CONVERSAO,
>>   PROD.ID_CATEGORIACOML,
>>   PROD.ID_GRUPOPRODTRIB,
>>   PROD.ID_PRODUTOFAMILIA,
>>   PROD.ID_CLASSETRANSPORTE,
>>   PROD.ID_PRODUTOPESO,
>>   PROD.ID_CLASSEPRODPCP,
>>   PROD.ID_PRODUTO_NCM,
>>   PROD.ID_CLASSESEGURO,
>>   PROD.ID_GRUPOCONTPROD,
>>   PROD.ID_PRODUTOAFV,
>>   PROD.ID_UNIDADE,
>>   PROD.DS_PRODUTO,
>>   PROD.PS_KGS_LIQ,
>>   PROD.VOLUME_M3,
>>   PROD.BO_GENERICO,
>>   PROD.NR_UNIDADES,
>>   PROD.PS_KGS_BRUTO,
>>   PROD.CD_PESQAUXILIAR,
>>   PROD.QT_PRODUTO_PALLET,
>>   PROD.TP_ORIGEM_MERCADORIA,
>>   PROD.DH_CADASTRO,
>>   PROD.BO_ATIVO,
>>   PROD.CD_DATAFLEX,
>>   PROD.DH_ULT_ALTER,
>>   PROD.CM_COMPRIMENTO,
>>   PROD.QT_VOLUMES,
>>   PROD.CM_LARGURA,
>>   PROD.CM_ALTURA,
>>   PROD.TP_PRODUTO,
>>   UNID.ABREVIATURA,
>>   UNID.DS_UNIDADE,
>>   CATG.DS_CATEGORIACOML,
>>   TPPR.ID_TIPOPRODUTO,
>>   TPPR.DS_TIPOPRODUTO
>> FROM  PRODUTO  PROD,
>>   PRODUTO  PROD_ORIG,
>>   PRODUTOCONVERSAO PCON,
>>   UNIDADE  UNID,
>>   CATEGORIACOMLCATG,
>>   TIPOPRODUTO  TPPR
>> WHERE PROD.ID_PRODUTO   =
>> DECODE(PCON.ID_PRODUTODESTINO,NULL,PROD_ORIG.ID_PRODUTO,PCON.ID_PRODUTODESTINO)
>> AND   PROD_ORIG.ID_PRODUTO  =
>> PCON.ID_PRODUTOORIGEM(+)
>> AND   PCON.BO_PADRAO_REL(+) = 'S'
>> AND   UNID.ID_UNIDADE   = PROD.ID_UNIDADE
>> AND   CATG.ID_CATEGORIACOML =  PROD.ID_CATEGORIACOML
>> AND   TPPR.ID_TIPOPRODUTO   = CATG.ID_TIPOPRODUTO
>> /
>>
>> --- Jonathan Barbosa <[EMAIL PROTECTED]> escreveu:
>>
>>
>> -
>> Use a opção ON COMMIT
>>
>> CREATE MATERIALIZED VIEW teste
>> REFRESH FAST ON COMMIT
>>  .
>>   .
>>.
>>
>>
>> Jonathan
>>
>>
>> - Original Message - 
>> From: "Welvis Douglas Silva Moreto"
>> <[EMAIL PROTECTED]>
>> To: 
>> Sent: Friday, July 15, 2005 12:06 PM
>> Subject: [oracle_br] Materialized View 
>>
>>
>>> Estou criando uma view Materialized View
>>>
>>> e no select contem varias tabelas com join como que
>>> faço pra dar um refresh na view quando ha alteração
>> em
>>> qualquer uma da tabelas.
>>>
>>>
>>> Obrigado
>>>
>>>
>>> Welvis Douglas
>>>
>>> __
>>> Converse com seus amigos em tempo real com o Yahoo!
>> Messenger
>>> http://br.download.yahoo.com/messenger/
>>>
>>>
>>>
>> __
>>>
>>> Pesquisar Histórico:
>>>
>> http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/
>>> Moderadores da lista:Dorian Anderson Soutto
>> [EMAIL PR

Re: [oracle_br] Passagem de Pârametros P/ Procedure

2005-07-17 Por tôpico Rogerio Ribeiro

Heverson,

o segredo de trabalhar com parâmetros tipo Record está na chamada a procedure. 
Na hora de chamar a procedure você tem que usar o construtor do tipo de dados 
usado:

 

Exemplo: nome_procedure(tipo_array(elementos));


Heverson Morais <[EMAIL PROTECTED]> escreveu:Bruno

Quando necessitei de algo parecido "PL/SQL Table" você encontra a
documentação no manual "PL/SQL User's Guide and Reference".

Segue abaixo um exemplo de como utilizar.

Espero que ajude

[]'s

Heverson



declaração do tipo vetor

rFINANCIAMENTO  Ces_Calc.TabFINANCIAMENTO; --(definido na package
ces_calc)
i   BINARY_INTEGER;

begin
  -- executando o procedimento
  Ces_Calc.CALCULA_ANUIDADE_PARCELAS(rVL_ANUIDADE
,rPC_DESCONTO_PADRAO
,rVL_PRIMEIRA_PARCELA
 ,rVL_PARCELAS_MENSAIS
   ,rFINANCIAMENTO
  ,'N' );
  i := rFINANCIAMENTO.First;
  WHILE i IS NOT NULL LOOP

 -- aqui trato o retorno em rFINANCIAMENTO

  end loop;

end

---

Delcaração/definição  do tipo vetor na package
CREATE OR REPLACE PACKAGE Ces_Calc IS

  TYPE RecFinanciamento IS RECORD
(TP_FINANCIAMENTO VARCHAR2(4)
 ,PC_FINANCIADANUMBER(6,3)
 ,VL_FINANCIADANUMBER(12,2)
 ,DS_FINANCIAMENTO VARCHAR2(50)
 ,DT_INICIO_VCTO   DATE
 ,DT_VIGENCIA_PARC DATE
 ,SQ_FINANCIAMENTO NUMBER );

TYPE TabFinanciamento IS TABLE OF
RecFinanciamento INDEX BY BINARY_INTEGER;



-- procedure que retorna o tipo vetor
PROCEDURE calcula_anuidade_parcelas( r_vl_anuidade IN OUT NUMBER
,r_pc_desconto_padrao  IN OUT NUMBER
,r_vl_primeira_parcela IN OUT NUMBER
,r_vl_parcelas IN OUT NUMBER
,rFINANCIAMENTOIN OUT
TabFinanciamento
,pSN_MATRICULA IN VARCHAR2
DEFAULT 'S'
   ) is

  iBINARY_INTEGER;
  R_FINANCIAMENTO  C_FINANCIAMENTO%rowtype;
  FINANCIAMENTO_VAZIATabFinanciamento;


BEGIN

  rFINANCIAMENTO := FINANCIAMENTO_VAZIA; -- inicialização
  open C_FINANCIAMENTO(v_nr_matricula
  ,v_mes_ano_competencia
  ,v_nr_ano_semestre);
  fetch C_FINANCIAMENTO into R_FINANCIAMENTO;
  i := 1;
  while C_FINANCIAMENTO%found loop
rFINANCIAMENTO(i).TP_FINANCIAMENTO := R_FINANCIAMENTO.TP_FINANCIAMENTO;
rFINANCIAMENTO(i).PC_FINANCIADA:= R_FINANCIAMENTO.PC_FINANCIADA;
rFINANCIAMENTO(i).VL_FINANCIADA:= R_FINANCIAMENTO.VL_FINANCIADA;
rFINANCIAMENTO(i).DS_FINANCIAMENTO := R_FINANCIAMENTO.DS_FINANCIAMENTO;
rFINANCIAMENTO(i).DT_INICIO_VCTO   := R_FINANCIAMENTO.DT_INI_VCTO;
rFINANCIAMENTO(i).DT_VIGENCIA_PARC := R_FINANCIAMENTO.DT_INI_VGC;
rFINANCIAMENTO(i).SQ_FINANCIAMENTO := R_FINANCIAMENTO.SQ_FINANCIAMENTO;
fetch C_FINANCIAMENTO into R_FINANCIAMENTO;
i := i + 1;
  end loop;
  close C_FINANCIAMENTO;
END




- Original Message -
From: "Bruno Daniel Borges" <[EMAIL PROTECTED]>
To: 
Sent: Friday, July 15, 2005 3:02 PM
Subject: [oracle_br] Passagem de Pârametros P/ Procedure


Pessoal,
  Preciso desenvolver uma PROCEDURE que receba como parâmetro algo parecido
como um ARRAY... O problema, é que esse conteúdo (dinâmico) não esta no
banco, é um processamento em memória da aplicação... e precisaria fazer algo
como um LOOP no conteúdo desse parâmetro para que a procedure fizesse a
gravação no banco...
  Nesse caso a única solução seria criar uma tabela TEMPORÁRIA baixando
esses dados da memória nela e depois trabalhar com ela dentro da Procedure ?
Porque além de gravar os dados, depois terei que trabalhar com eles dentro
da procedure, gerando por exemplo registros em outras tabelas e alterando
outros.

Desde já agradeço !

Bruno Borges



--
Universidade Anhembi Morumbi - http://www.anhembi.br
A mais criativa e inovadora universidade brasileira


[As partes desta mensagem que não continham texto foram removidas]



__

Histórico: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/
Falar com os Moderadores:([EMAIL PROTECTED])
Dorian Anderson Soutto - Fernanda Damous - Alisson Aguiar
__
Links do Yahoo! Grupos











__

Histórico: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/
Falar com os Moderadores:([EMAIL PROTECTED])
Dorian Anderson Soutto - Fernanda Damous - Alisson Aguiar 
__ 



-
Links do Yahoo! Grupos

   Para visitar o site do seu grupo na web, acesse:
http

Re: [oracle_br] Materialized View ????

2005-07-17 Por tôpico Rogerio Ribeiro
Boa noite Welvis!
Use a package DBMS_MVIEW
 
Ex: DBMS_MVIEW.REFRESH('NOME_VIEW');

Welvis Douglas Silva Moreto <[EMAIL PROTECTED]> escreveu:
Estou criando uma view Materialized View

e no select contem varias tabelas com join como que
faço pra dar um refresh na view quando ha alteração em
qualquer uma da tabelas.


Obrigado


Welvis Douglas

__
Converse com seus amigos em tempo real com o Yahoo! Messenger 
http://br.download.yahoo.com/messenger/ 


__

Pesquisar Histórico: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/
Moderadores da lista:Dorian Anderson Soutto [EMAIL PROTECTED] 
Fernanda Damous [EMAIL PROTECTED] 
Alisson Aguiar [EMAIL PROTECTED]
__
http://br.groups.yahoo.com/group/oracle_br/ 
__ 



-
Links do Yahoo! Grupos

   Para visitar o site do seu grupo na web, acesse:
http://br.groups.yahoo.com/group/oracle_br/
  
   Para sair deste grupo, envie um e-mail para:
[EMAIL PROTECTED]
  
   O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço do 
Yahoo!. 


__
Converse com seus amigos em tempo real com o Yahoo! Messenger 
http://br.download.yahoo.com/messenger/ 

[As partes desta mensagem que não continham texto foram removidas]





__

Histórico: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/
Falar com os Moderadores:([EMAIL PROTECTED])
Dorian Anderson Soutto - Fernanda Damous - Alisson Aguiar 
__ 
Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
http://br.groups.yahoo.com/group/oracle_br/

<*> Para sair deste grupo, envie um e-mail para:
[EMAIL PROTECTED]

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
http://br.yahoo.com/info/utos.html