Re: [oracle_br] Materialized View ????
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
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 ????
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