RES: [oracle_br] help UPDATE

2012-09-24 Por tôpico Alisson Luz
Olá Paulo...

 

Você pode usar um cursor para isso segue um exemplo

 

 

-- Created on 25/05/2011 by ALISSON 

declare 

 cursor boletos_vencidos is

 -- monte aqui seu select 

  select r.id_boleto from boleto r

 where r. tipo_contrato = 1

  and trunc(r. dat_vencimento) < = trunc(sysdate-2)

  and r.situacao = 'F'

  and r.liquidado = 'N;

begin

 -- Test statements here



 for c in boletos_vencidos loop

-- monte aqui seu update(s) como quiser usando os campos do cursores...

update contratos c

 set c.id_boleto = boletos_vencidos. id_boleto;

  commit;

  

  

  end loop;



end;

 

se for uma tabela em produção e muito grande com trigger sugiro usar bulk
collect

 

De: oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br] Em
nome de Paulo Couto
Enviada em: segunda-feira, 24 de setembro de 2012 13:54
Para: oracle_br@yahoogrupos.com.br
Assunto: Re: [oracle_br] help UPDATE

 

  

Carlos, não tenho certeza, por isso preciso de ajuda, você tem alguma
sugestão para atualizar os campos de uma tabela com base num select de outra
tabela ?
 
Att,
 
Paulo.



De: Carlos Silva mailto:carlos-csilva%40hotmail.com> >
Para: oracle_br@yahoogrupos.com.br   
Enviadas: Segunda-feira, 24 de Setembro de 2012 13:15
Assunto: RE: [oracle_br] help UPDATE


Cara, tem certeza que é possível fazer um update com JOIN? Utilizando essa
logica?  Faz um bloco animo com curso.To: oracle_br@yahoogrupos.com.br
 
From: paulopcto2...@yahoo.com.br  
Date: Mon, 24 Sep 2012 07:28:06 -0700
Subject: [oracle_br] help UPDATE

  


  
  
  Amigos, estou tentando fazer um update usando a clausula JOIN mas
apresenta o seguinte erro:

ORA-00933 SQL command not properly ended

Faz muito tempo que não faço update no oracle, não sei se a sintaxe está
correta.

UPDATEGEO_LAYER_TALHAO A

SET A.ESTADO=B.ESTADO,A.NOME_FAZ=B.FAZPROP,A.PERC_TRAB=100

FROM GEO_LAYER_TALHAO A INNER JOIN TBL_AUX_USA B 

ON B.CODFAZENDA=A.FAZENDA AND B.ZONA=A.ZONA

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







  

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



--
>Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira
responsabilidade de seus remetentes.
Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ 
--
>Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure
» Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE:
http://www.oraclebr.com.br/  
-- Links do Yahoo!
Grupos

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





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



[oracle_br] Re: help UPDATE

2012-09-24 Por tôpico ederson2001br
Alô Carlos e Paulo,

Bem, eu já fiz com join entre duas tabelas assim: 

-##

--mostra as linhas que serão alteradas
TESTED@nmbak>  SELECT a.machine, a.terminal, b.maquina, a.DATA_MOVTO, 
a.PROGRAMA, a.OSUSER FROM LOGON_NEGADO A, LOGON_CONEXAO_VTRINE b WHERE A.sid = 
b.sid AND a.serial = b.serial;

MACHINE  TERMINAL MAQUINA  DATA_MOVT 
PROGRAMA   OSUSER
   - 
-- --
LINUX.SITE   1PORTAL10G-7  06-SEP-09 1  
1
LOJA12\PDV01202  PDV01202 PORTAL10G-9  05-JUL-10 
AUTOMATIC_UPDATE.EXE.EXE   ADMINISTRADOR
JDBCCLIENT   1PORTAL10G-9  06-SEP-09 1  
1
VOIP0515 1PORTAL10G-7  06-SEP-09 1  
1
LINUX.SITE   1PORTAL10G-13 06-SEP-09 1  
1
VOIP0515 1PORTAL10G-15 06-SEP-09 1  
1
JDBCCLIENT   1PORTAL10G-13 06-SEP-09 1  
1
JDBCCLIENT   1PORTAL10G-11 06-SEP-09 1  
1
LINUX.SITE   1PORTAL10G-14 06-SEP-09 1  
1
JDBCCLIENT   1VPN0106-SEP-09 1  
1
JDBCCLIENT   1PORTAL10G-15 06-SEP-09 1  
1
JDBCCLIENT   1PORTAL10G-12 06-SEP-09 1  
1
JDBCCLIENT   1PORTAL10G-12 06-SEP-09 1  
1

13 rows selected.

--altera conforme o select acima
TESTED@nmbak> UPDATE LOGON_NEGADO a SET machine  = (select maquina from 
LOGON_CONEXAO_VTRINE b WHERE  b.sid = a.sid AND b.serial = a.serial),
terminal = (select maquina from LOGON_CONEXAO_VTRINE b WHERE  b.sid = a.sid AND 
b.serial = a.serial)where sid is not null;

13 rows updated.

--mostra as linhas após a alteração
TESTED@nmbak>  SELECT a.machine, a.terminal, b.maquina, a.DATA_MOVTO, 
a.PROGRAMA, a.OSUSER FROM LOGON_NEGADO A, LOGON_CONEXAO_VTRINE b WHERE A.sid = 
b.sid AND a.serial = b.serial;

MACHINE  TERMINAL MAQUINA  DATA_MOVT 
PROGRAMA   OSUSER
   - 
-- --
PORTAL10G-7  PORTAL10G-7  PORTAL10G-7  06-SEP-09 1  
1
PORTAL10G-9  PORTAL10G-9  PORTAL10G-9  05-JUL-10 
AUTOMATIC_UPDATE.EXE.EXE   ADMINISTRADOR
PORTAL10G-9  PORTAL10G-9  PORTAL10G-9  06-SEP-09 1  
1
PORTAL10G-7  PORTAL10G-7  PORTAL10G-7  06-SEP-09 1  
1
PORTAL10G-13 PORTAL10G-13 PORTAL10G-13 06-SEP-09 1  
1
PORTAL10G-15 PORTAL10G-15 PORTAL10G-15 06-SEP-09 1  
1
PORTAL10G-13 PORTAL10G-13 PORTAL10G-13 06-SEP-09 1  
1
PORTAL10G-11 PORTAL10G-11 PORTAL10G-11 06-SEP-09 1  
1
PORTAL10G-14 PORTAL10G-14 PORTAL10G-14 06-SEP-09 1  
1
VPN01VPN01VPN0106-SEP-09 1  
1
PORTAL10G-15 PORTAL10G-15 PORTAL10G-15 06-SEP-09 1  
1
PORTAL10G-12 PORTAL10G-12 PORTAL10G-12 06-SEP-09 1  
1
PORTAL10G-12 PORTAL10G-12 PORTAL10G-12 06-SEP-09 1  
1

13 rows selected.



Ederson Elias
DBA Oracle
http://br.linkedin.com/pub/ederson-elias/24/8b/8b0


--- Em oracle_br@yahoogrupos.com.br, Paulo Couto  escreveu
>
> Carlos, não tenho certeza, por isso preciso de ajuda, você tem alguma 
> sugestão para atualizar os campos de uma tabela com base num select de outra 
> tabela ?
>  
> Att,
>  
> Paulo.
>  
> 
> 
>  De: Carlos Silva 
> Para: oracle_br@yahoogrupos.com.br 
> Enviadas: Segunda-feira, 24 de Setembro de 2012 13:15
> Assunto: RE: [oracle_br] help UPDATE
>   
> 
> Cara, tem certeza que é possível fazer um update com JOIN? Utilizando essa 
> logica?  Faz um bloco animo com curso.To: oracle_br@yahoogrupos.com.br
> From: paulopcto2002@...
> Date: Mon, 24 Sep 2012 07:28:06 -0700
> Subject: [oracle_br] help UPDAT

[oracle_br] Re: Arredondamento espontaneo em uma Tb da Base.

2012-09-24 Por tôpico gersonroj
Não fosse o suficiente, o bizarro é que acontece para decimais 0,01 ou 0,99 
qualquer outro valor o insert funciona OK.

DBAs ! socorro ! que é isso ? Bug do Oracle ?

--- Em oracle_br@yahoogrupos.com.br, "gersonroj"  escreveu
>
> Ola Milton,
> 
> 1 - na Tb Caixa; campo VALOR; DataType NUMBER(15,2);
> 
> 2 - na PROC,
> 
>  W_VALOR IN CAIXA.VALOR%TYPE,
> 
>  insert into caixa(VALOR) 
>  values(W_VALOR)
> 
> 3 - Não testei via SQL*Plus pois como desenvolvedor utilizo somente a IDE 
> "Oracle SQL Developer" que insere correto o valor.
> 
> 4 - Aplicação não pode ser pq nada foi alterado no código e debugando no 
> codigo é passado o valor correto no parametro da PROC.
> 
> Muito extranho, nunca vi isto acontecer ! ...rs é como se alguem da equipe, 
> tivesse alterado alguma config do Oracle, desta Tb, que desconheço ...
> 
> 
> 
> --- Em oracle_br@yahoogrupos.com.br, "Milton Bastos Henriquis Jr." 
>  escreveu
> >
> > Vai ficar difícil da gente adivinhar como está esse procedimento aí no teu
> > ambiente!
> > 
> > Seria melhor se vc:
> > 
> > 1 - Passasse pra gente qual o datatype exato do teu campo;
> > 2 - Passar também qual o insert exato que está sendo passado pro teu banco
> > de dados.
> > 3 - E se possível, simular um casso desse aí, em que acontece o
> > arredondamento,  MANUALMENTE.
> > Ou seja, gerar esse caso via SQL*Plus, daí copiar e colar aqui as
> > evidências.
> > 
> > Por que estou falando isso?
> > Pois eu não conheço tua aplicação... não sei (e vc não deixou claro) se o
> > problema
> > de repente é na tua aplicação que esteja causando esse arredondamento antes
> > de enviar
> > pro banco... essa é somente uma das possibilidades!
> > 
> > 
> > 
> > 2012/9/24 gersonroj 
> > 
> > > **
> > >
> > >
> > > Derrepente minha base, em apenas uma tabela, por um insert que esta em uma
> > > PROC, começou a arredondar os centavos na inclusão de valores acima de 100
> > > mil.
> > >
> > > Exemplo: 200.000,99 arredonda para 200.000,98 e 300.000,99 arredonda para
> > > 300.001,00.
> > >
> > > Obs.: estava funcionando e nada foi alterado.
> > >
> > > Alguem tem alguma idéia do que poderá estar ocorrendo?
> > >
> > >  
> > >
> > 
> > 
> > 
> > -- 
> > Att,
> > 
> > 
> > [As partes desta mensagem que não continham texto foram removidas]
> >
>




RE: [oracle_br] help UPDATE

2012-09-24 Por tôpico Carlos Silva

Cara, tem certeza que é possível fazer um update com JOIN? Utilizando essa 
logica?  Faz um bloco animo com curso.To: oracle_br@yahoogrupos.com.br
From: paulopcto2...@yahoo.com.br
Date: Mon, 24 Sep 2012 07:28:06 -0700
Subject: [oracle_br] help UPDATE
















 



  



  
  
  Amigos, estou tentando fazer um update usando a clausula JOIN mas 
apresenta o seguinte erro:

 

ORA-00933 SQL command not properly ended

 

Faz muito tempo que não faço update no oracle, não sei se a sintaxe está 
correta.

 UPDATEGEO_LAYER_TALHAO A

SET A.ESTADO=B.ESTADO,A.NOME_FAZ=B.FAZPROP,A.PERC_TRAB=100

FROM GEO_LAYER_TALHAO A INNER JOIN TBL_AUX_USA B 

ON B.CODFAZENDA=A.FAZENDA AND B.ZONA=A.ZONA



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






 









  

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





--
>Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira 
>responsabilidade de seus remetentes.
Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ 
--
>Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure » 
>Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: 
>http://www.oraclebr.com.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:
oracle_br-unsubscr...@yahoogrupos.com.br

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




Re: [oracle_br] Re: Sugestões de Melhores práticas

2012-09-24 Por tôpico Jales Jose Moraes
Valeu ederson, foi exatamente o que estava precisando. Obrigado...



De: ederson2001br 
Para: oracle_br@yahoogrupos.com.br 
Enviadas: Sexta-feira, 21 de Setembro de 2012 9:44
Assunto: [oracle_br] Re: Sugestões de Melhores práticas

  
Alô Jales,

Realmente o EXPDP tem bem mais opções. Dá uma olhada neste artigo do Arup 
Nanda, onde ele claramente diz que os dados são randômicos:

"To export a random sample of 10% of the rows of all the tables, use the SAMPLE 
parameter in expdp command as shown below:
$ expdp SAMPLE=10"

Mas, mesmo assim, é possível uma combinação dos parâmetros SAMPLE e QUERY, veja 
um exemplo que rodei aqui no meu teste:

--EXPDP combinando TABLE, SAMPLE e QUERY
expdp DIRECTORY=home_ora DUMPFILE=teste_samp20 LOGFILE=teste_samp20 
tables=tested.SENHA_UTILIZADA_NEW sample=20 
query=tested.SENHA_UTILIZADA_NEW:\"where USERNAME\=\'12448\'\"

SQL> select count(*) from senha_utilizada_new;

COUNT(*)
--
106968

SQL> select count(*) from senha_utilizada_new
2 where USERNAME='12448';

COUNT(*)
--
386

Na documenteação, diz que SAMPLE dará um valor aproximado:
"SAMPLE - Allows you to specify a percentage of data to be sampled and unloaded 
from the source database. The sample_percent indicates the probability that a 
block of rows will be selected as part of the sample". 
Então, das 386 linhas existentes na condição, 20% seria 77 linhas, mas o export 
gerou 85 linhas (eu entendi que a unidade do SAMPLE é BLOCKS e não linhas).

Veja o teste_samp20.log:

oracle@ederson:~> cat teste_samp20.log
;;;
Export: Release 10.2.0.4.0 - 64bit Production on Friday, 21 September, 2012 
9:27:26

Copyright (c) 2003, 2007, Oracle. All rights reserved.
;;;
Connected to: Oracle Database 10g Release 10.2.0.4.0 - 64bit Production
With the Real Application Clusters option
Starting "SYS"."SYS_EXPORT_TABLE_01": / AS SYSDBA DIRECTORY=home_ora 
DUMPFILE=teste_samp20 LOGFILE=teste_samp20 tables=tested.SENHA_UTILIZADA_NEW 
sample=20 query=tested.SENHA_UTILIZADA_NEW:"where USERNAME='12448'"
Estimate in progress using BLOCKS method...
Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
Total estimation using BLOCKS method: 4 MB
Processing object type TABLE_EXPORT/TABLE/TABLE
Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
. . exported "TESTED"."SENHA_UTILIZADA_NEW" 7.703 KB 85 rows
Master table "SYS"."SYS_EXPORT_TABLE_01" successfully loaded/unloaded
**
Dump file set for SYS.SYS_EXPORT_TABLE_01 is:
/home/oracle/teste_samp20.dmp
Job "SYS"."SYS_EXPORT_TABLE_01" successfully completed at 09:28:29

Qualquer crítica é bem vinda.

Ederson Elias
DBA Oracle
http://br.linkedin.com/pub/ederson-elias/24/8b/8b0

--- Em mailto:oracle_br%40yahoogrupos.com.br, Jales Jose Moraes 
 escreveu
>
> 
> 
> Obrigado pelas sugestões.
>  
> Estou vendo também o sugerido pelo amigo Ederson (sobre o exppd). Pelo que li 
> na documentação existe a possibilidade de exportar uma certa porcentagem do 
> schema em questão (no doc traz um exemplo do comando como o abaixo, no caso 
> seria exportado 10% do schema "movies")
>  
> C:\> expdp bert/bert directory=data_pump_dir dumpfile=sample.dmp 
> schemas=movies sample=10
>  
> Mas não vi na doc se este 10% teria algum criterio, ou seja:  Eu posso pedir 
> 10% dos dados mas com base nos registros mais antigos? Tipos movimentações 
> que ocorreram entre 2009 e 2010?




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