Re: [oracle_br] Re: Consulta muito lenta!!

2017-12-19 Por tôpico jlchia...@yahoo.com.br [oracle_br]
Então  : comparando o plano original com o novo plano obtido pelo profile, ok 
até mudou o método de acesso mas a Diferença de cardinalidade ao se usar esse 
tal índice  BKPF~0 é ** brutal **, é muita coisa mesmo - assim se esse índice 
Já Existia, o fato de ele não ter sido usado indica que vc deve ter um problema 
Sério de coleta de estatísticas aí... Talvez o tamanho da amostra seja pequeno 
demais, talvez esteja faltando histogramas, talvez a frequência de coleta não 
esteja ótima... Alguma coisa de errada não está certa nesse ambiente...
  Já que cfrme sabemos o SAP não deixa vc mudar nada no banco sozinho,  imho vc 
tem informação MAIS QUE SUFICIENTE pra demandar com o pessoal do SAP 
esclarecimentos e análise de alteração no procedimento de coleta de 
estatísticas
  
  []s
  
Chiappa

Re: [oracle_br] Re: Consulta muito lenta!!

2017-12-19 Por tôpico Rafael Mendonca raffaell.t...@yahoo.com [oracle_br]
Esse indice FAGLFLEXA~2 eu fiz rebuild, mas nao adiantou de absolutamente nada. 
O restante nao foi alterado, nem indice criado nem dropado.
Algumas das informacoes do SQLT:
DBMS_STATS SYSTEM STATISTICS Single-block read time of 1.138 milliseconds seems 
too small.Index coalesce candidate. (para quase todos os indices dos segmentos 
envolvidos aparece esse advisor)Index with fluctuating BLEVELSample size of 
1593658 rows may be too small for column with histogram. Sample percent used 
was:0.10%. (Essa mensagem tb aparece para todas as colunas da tabela FAGLFLEXA)
A coleta de estatística é feita pelo sistema SAP.
 

Em Terça-feira, 19 de Dezembro de 2017 15:08, "jlchia...@yahoo.com..br 
[oracle_br]"  escreveu:
 

     Ok que o vc contornou seu 'problema', mas alguma coisa muito esquisita 
estava acontecendo aí : no plano original vc tinha (elimino a coluna do ID e do 
tempo só para caber melhor aqui no post) :


| Operation | Name    | Rows  | Bytes |TempSpc| Cost 
(%CPU)|

| SELECT STATEMENT  | |   |   |   | 54953 
(100)|
|  FILTER   | |   |   |   | 
   |
|   HASH JOIN   | |  1280K|   398M|   277M| 54952   
(1)|
|    TABLE ACCESS BY INDEX ROWID| FAGLFLEXA   |  1280K|   262M|   |  8463   
(1)|
| INDEX RANGE SCAN  | FAGLFLEXA~2 |   398K|   |   |   440   
(1)|
|    TABLE ACCESS BY INDEX ROWID| BKPF    |  2499K|   264M|   | 18178   
(1)|
| INDEX SKIP SCAN   | BKPF~BUT    |  2499K|   |   |  2599   
(2)|



E a nova versão :


-
| Operation  | Name    | Rows  | Bytes | Cost (%CPU)|
-
| SELECT STATEMENT   | |   |   |    11 (100)|
|  FILTER    | |   |   |    |
|   NESTED LOOPS | |   |   |    |
|    NESTED LOOPS    | |    31 | 10075 |    10   (0)|
| TABLE ACCESS BY INDEX ROWID| FAGLFLEXA   |    31 |  6634 | 1   (0)|
|  INDEX RANGE SCAN  | FAGLFLEXA~2 |    10 |   | 1   (0)|
| INDEX UNIQUE SCAN  | BKPF~0  | 1 |   | 0   (0)|
|    TABLE ACCESS BY INDEX ROWID | BKPF    | 1 |   111 | 0   (0)|
-


==> Perceba que as qtdades de linhas envolvidas passaram de coisa de milhão pra 
coisa de dezenas de linhas : vc já tinha disponível esse índice BKPF ? Vc 
recriou (tirando ou adicionando colunas, talvez ?) esse índice FAGLFLEXA~2 ? 
COMO É que o Otimizador errou por uma margem tão larga, estimando no plano 
original que o hash join iria criar (E provavelmente CRIOU, dado o consumo de 
temp space!!) tabela hash de vários milhões E agora no novo plano não chega nem 
perto ?? Será que as Estatísticas estavam assim tão defasadas ??? Ou como eu 
disse vc mudou as regras do jogo, criando um novo índice e/ou alterando os que 
existiam ??

[]s

  Chiappa  #yiv2597863981 #yiv2597863981 -- #yiv2597863981ygrp-mkp {border:1px 
solid #d8d8d8;font-family:Arial;margin:10px 0;padding:0 10px;}#yiv2597863981 
#yiv2597863981ygrp-mkp hr {border:1px solid #d8d8d8;}#yiv2597863981 
#yiv2597863981ygrp-mkp #yiv2597863981hd 
{color:#628c2a;font-size:85%;font-weight:700;line-height:122%;margin:10px 
0;}#yiv2597863981 #yiv2597863981ygrp-mkp #yiv2597863981ads 
{margin-bottom:10px;}#yiv2597863981 #yiv2597863981ygrp-mkp .yiv2597863981ad 
{padding:0 0;}#yiv2597863981 #yiv2597863981ygrp-mkp .yiv2597863981ad p 
{margin:0;}#yiv2597863981 #yiv2597863981ygrp-mkp .yiv2597863981ad a 
{color:#ff;text-decoration:none;}#yiv2597863981 #yiv2597863981ygrp-sponsor 
#yiv2597863981ygrp-lc {font-family:Arial;}#yiv2597863981 
#yiv2597863981ygrp-sponsor #yiv2597863981ygrp-lc #yiv2597863981hd {margin:10px 
0px;font-weight:700;font-size:78%;line-height:122%;}#yiv2597863981 
#yiv2597863981ygrp-sponsor #yiv2597863981ygrp-lc .yiv2597863981ad 
{margin-bottom:10px;padding:0 0;}#yiv2597863981 #yiv2597863981actions 
{font-family:Verdana;font-size:11px;padding:10px 0;}#yiv2597863981 
#yiv2597863981activity 
{background-color:#e0ecee;float:left;font-family:Verdana;font-size:10px;padding:10px;}#yiv2597863981
 #yiv2597863981activity span {font-weight:700;}#yiv2597863981 
#yiv2597863981activity span:first-child 
{text-transform:uppercase;}#yiv2597863981 #yiv2597863981activity span a 
{color:#5085b6;text-decoration:none;}#yiv2597863981 #yiv2597863981activity span 
span {color:#ff7900;}#yiv2

Re: [oracle_br] Re: Consulta muito lenta!!

2017-12-19 Por tôpico jlchia...@yahoo.com.br [oracle_br]
Ok que o vc contornou seu 'problema', mas alguma coisa muito esquisita estava 
acontecendo aí : no plano original vc tinha (elimino a coluna do ID e do tempo 
só para caber melhor aqui no post) :


| Operation | Name| Rows  | Bytes |TempSpc| Cost 
(%CPU)|

| SELECT STATEMENT  | |   |   |   | 54953 
(100)|
|  FILTER   | |   |   |   | 
   |
|   HASH JOIN   | |  1280K|   398M|   277M| 54952   
(1)|
|TABLE ACCESS BY INDEX ROWID| FAGLFLEXA   |  1280K|   262M|   |  8463   
(1)|
| INDEX RANGE SCAN  | FAGLFLEXA~2 |   398K|   |   |   440   
(1)|
|TABLE ACCESS BY INDEX ROWID| BKPF|  2499K|   264M|   | 18178   
(1)|
| INDEX SKIP SCAN   | BKPF~BUT|  2499K|   |   |  2599   
(2)|



E a nova versão :


-
| Operation  | Name| Rows  | Bytes | Cost (%CPU)|
-
| SELECT STATEMENT   | |   |   |11 (100)|
|  FILTER| |   |   ||
|   NESTED LOOPS | |   |   ||
|NESTED LOOPS| |31 | 10075 |10   (0)|
| TABLE ACCESS BY INDEX ROWID| FAGLFLEXA   |31 |  6634 | 1   (0)|
|  INDEX RANGE SCAN  | FAGLFLEXA~2 |10 |   | 1   (0)|
| INDEX UNIQUE SCAN  | BKPF~0  | 1 |   | 0   (0)|
|TABLE ACCESS BY INDEX ROWID | BKPF| 1 |   111 | 0   (0)|
-


==> Perceba que as qtdades de linhas envolvidas passaram de coisa de milhão pra 
coisa de dezenas de linhas : vc já tinha disponível esse índice BKPF ? Vc 
recriou (tirando ou adicionando colunas, talvez ?) esse índice FAGLFLEXA~2 ? 
COMO É que o Otimizador errou por uma margem tão larga, estimando no plano 
original que o hash join iria criar (E provavelmente CRIOU, dado o consumo de 
temp space!!) tabela hash de vários milhões E agora no novo plano não chega nem 
perto ?? Será que as Estatísticas estavam assim tão defasadas ??? Ou como eu 
disse vc mudou as regras do jogo, criando um novo índice e/ou alterando os que 
existiam ??

[]s

  Chiappa

Re: [oracle_br] Re: Consulta muito lenta!!

2017-12-19 Por tôpico Rafael Mendonca raffaell.t...@yahoo.com [oracle_br]
Luis, segue o novo plano gerado abaixo:

http://textuploader.com/dcjxh
 

Em Terça-feira, 19 de Dezembro de 2017 10:11, "Luis Freitas 
lfreita...@yahoo.com [oracle_br]"  escreveu:
 

     Ola Rafael,
    Você pode postar o plano de execução novo?
Atc,Luis Freitas 

On Monday, December 18, 2017 3:33 PM, "Rafael Mendonca 
raffaell.t...@yahoo.com [oracle_br]"  wrote:
 

     PEssoal, o problema foi resolvido.
A solução na qual tomei como base foi a extração do relatório SQLT pelo sqlid 
da consulta. E no SQLT existia a recomendação para criação de um sqlprofile, 
que o ganho seria de 99%, após a criação do sql_profile abaixo
execute dbms_sqltune.accept_sql_profile(task_name => 
'sqlt_s47584_mem',task_owner => 'SYS', replace => TRUE);

A query que rodava em 16 minutos, passou a rodar em 3 segundos.
Valeu pessoal, obrigado a todos. 

Em Sexta-feira, 15 de Dezembro de 2017 19:43, "jlchia...@yahoo.com.br 
[oracle_br]"  escreveu:
 

     Bom, pelo prompt de SQL> eu estou SUPONDO que vc optou por criar no 
sqlplus as bind variables todas necessárias e executar o SQL via sqlplus mesmo 
né ? Bom, DEVERIA FUNCIONAR certinho mas pra teste já que é assim mete o hint 
de gather_statistics mesmo no texto que vc entra entrando no sqlplus... Se 
ainda assim não mostrar o A-ROWs E o E-ROWs já repassa essa info pro Suporte 
SAP, é um sinal indicador que alguma coisa tá MUITO diferente nesse banco

[]s

  Chiappa
   

 

 #yiv5858779180 #yiv5858779180 -- #yiv5858779180ygrp-mkp {border:1px solid 
#d8d8d8;font-family:Arial;margin:10px 0;padding:0 10px;}#yiv5858779180 
#yiv5858779180ygrp-mkp hr {border:1px solid #d8d8d8;}#yiv5858779180 
#yiv5858779180ygrp-mkp #yiv5858779180hd 
{color:#628c2a;font-size:85%;font-weight:700;line-height:122%;margin:10px 
0;}#yiv5858779180 #yiv5858779180ygrp-mkp #yiv5858779180ads 
{margin-bottom:10px;}#yiv5858779180 #yiv5858779180ygrp-mkp ..yiv5858779180ad 
{padding:0 0;}#yiv5858779180 #yiv5858779180ygrp-mkp .yiv5858779180ad p 
{margin:0;}#yiv5858779180 #yiv5858779180ygrp-mkp .yiv5858779180ad a 
{color:#ff;text-decoration:none;}#yiv5858779180 #yiv5858779180ygrp-sponsor 
#yiv5858779180ygrp-lc {font-family:Arial;}#yiv5858779180 
#yiv5858779180ygrp-sponsor #yiv5858779180ygrp-lc #yiv5858779180hd {margin:10px 
0px;font-weight:700;font-size:78%;line-height:122%;}#yiv5858779180 
#yiv5858779180ygrp-sponsor #yiv5858779180ygrp-lc .yiv5858779180ad 
{margin-bottom:10px;padding:0 0;}#yiv5858779180 #yiv5858779180actions 
{font-family:Verdana;font-size:11px;padding:10px 0;}#yiv5858779180 
#yiv5858779180activity 
{background-color:#e0ecee;float:left;font-family:Verdana;font-size:10px;padding:10px;}#yiv5858779180
 #yiv5858779180activity span {font-weight:700;}#yiv5858779180 
#yiv5858779180activity span:first-child 
{text-transform:uppercase;}#yiv5858779180 #yiv5858779180activity span a 
{color:#5085b6;text-decoration:none;}#yiv5858779180 #yiv5858779180activity span 
span {color:#ff7900;}#yiv5858779180 #yiv5858779180activity span 
.yiv5858779180underline {text-decoration:underline;}#yiv5858779180 
.yiv5858779180attach 
{clear:both;display:table;font-family:Arial;font-size:12px;padding:10px 
0;width:400px;}#yiv5858779180 .yiv5858779180attach div a 
{text-decoration:none;}#yiv5858779180 .yiv5858779180attach img 
{border:none;padding-right:5px;}#yiv5858779180 .yiv5858779180attach label 
{display:block;margin-bottom:5px;}#yiv5858779180 .yiv5858779180attach label a 
{text-decoration:none;}#yiv5858779180 blockquote {margin:0 0 0 
4px;}#yiv5858779180 .yiv5858779180bold 
{font-family:Arial;font-size:13px;font-weight:700;}#yiv5858779180 
.yiv5858779180bold a {text-decoration:none;}#yiv5858779180 dd.yiv5858779180last 
p a {font-family:Verdana;font-weight:700;}#yiv5858779180 dd.yiv5858779180last p 
span {margin-right:10px;font-family:Verdana;font-weight:700;}#yiv5858779180 
dd.yiv5858779180last p span.yiv5858779180yshortcuts 
{margin-right:0;}#yiv5858779180 div.yiv5858779180attach-table div div a 
{text-decoration:none;}#yiv5858779180 div.yiv5858779180attach-table 
{width:400px;}#yiv5858779180 div.yiv5858779180file-title a, #yiv5858779180 
div.yiv5858779180file-title a:active, #yiv5858779180 
div.yiv5858779180file-title a:hover, #yiv5858779180 div.yiv5858779180file-title 
a:visited {text-decoration:none;}#yiv5858779180 div.yiv5858779180photo-title a, 
#yiv5858779180 div.yiv5858779180photo-title a:active, #yiv5858779180 
div.yiv5858779180photo-title a:hover, #yiv5858779180 
div.yiv5858779180photo-title a:visited {text-decoration:none;}#yiv5858779180 
div#yiv5858779180ygrp-mlmsg #yiv5858779180ygrp-msg p a 
span.yiv5858779180yshortcuts 
{font-family:Verdana;font-size:10px;font-weight:normal;}#yiv5858779180 
.yiv5858779180green {color:#628c2a;}#yiv5858779180 .yiv5858779180MsoNormal 
{margin:0 0 0 0;}#yiv5858779180 o {font-size:0;}#yiv5858779180 
#yiv5858779180photos div {float:left;width:72px;}#yiv5858779180 
#yiv5858779180photos div div {border:1px solid 
#66;min-height:62px;overflow:hidden;width:62px

Re: [oracle_br] Re: Consulta muito lenta!!

2017-12-19 Por tôpico Luis Freitas lfreita...@yahoo.com [oracle_br]
Ola Rafael,
    Você pode postar o plano de execução novo?
Atc,Luis Freitas 

On Monday, December 18, 2017 3:33 PM, "Rafael Mendonca 
raffaell.t...@yahoo.com [oracle_br]"  wrote:
 

     PEssoal, o problema foi resolvido.
A solução na qual tomei como base foi a extração do relatório SQLT pelo sqlid 
da consulta. E no SQLT existia a recomendação para criação de um sqlprofile, 
que o ganho seria de 99%, após a criação do sql_profile abaixo
execute dbms_sqltune.accept_sql_profile(task_name => 
'sqlt_s47584_mem',task_owner => 'SYS', replace => TRUE);

A query que rodava em 16 minutos, passou a rodar em 3 segundos.
Valeu pessoal, obrigado a todos. 

Em Sexta-feira, 15 de Dezembro de 2017 19:43, "jlchia...@yahoo.com.br 
[oracle_br]"  escreveu:
 

     Bom, pelo prompt de SQL> eu estou SUPONDO que vc optou por criar no 
sqlplus as bind variables todas necessárias e executar o SQL via sqlplus mesmo 
né ? Bom, DEVERIA FUNCIONAR certinho mas pra teste já que é assim mete o hint 
de gather_statistics mesmo no texto que vc entra entrando no sqlplus... Se 
ainda assim não mostrar o A-ROWs E o E-ROWs já repassa essa info pro Suporte 
SAP, é um sinal indicador que alguma coisa tá MUITO diferente nesse banco

[]s

  Chiappa
   

 #yiv4409151850 #yiv4409151850 -- #yiv4409151850ygrp-mkp {border:1px solid 
#d8d8d8;font-family:Arial;margin:10px 0;padding:0 10px;}#yiv4409151850 
#yiv4409151850ygrp-mkp hr {border:1px solid #d8d8d8;}#yiv4409151850 
#yiv4409151850ygrp-mkp #yiv4409151850hd 
{color:#628c2a;font-size:85%;font-weight:700;line-height:122%;margin:10px 
0;}#yiv4409151850 #yiv4409151850ygrp-mkp #yiv4409151850ads 
{margin-bottom:10px;}#yiv4409151850 #yiv4409151850ygrp-mkp ..yiv4409151850ad 
{padding:0 0;}#yiv4409151850 #yiv4409151850ygrp-mkp .yiv4409151850ad p 
{margin:0;}#yiv4409151850 #yiv4409151850ygrp-mkp .yiv4409151850ad a 
{color:#ff;text-decoration:none;}#yiv4409151850 #yiv4409151850ygrp-sponsor 
#yiv4409151850ygrp-lc {font-family:Arial;}#yiv4409151850 
#yiv4409151850ygrp-sponsor #yiv4409151850ygrp-lc #yiv4409151850hd {margin:10px 
0px;font-weight:700;font-size:78%;line-height:122%;}#yiv4409151850 
#yiv4409151850ygrp-sponsor #yiv4409151850ygrp-lc .yiv4409151850ad 
{margin-bottom:10px;padding:0 0;}#yiv4409151850 #yiv4409151850actions 
{font-family:Verdana;font-size:11px;padding:10px 0;}#yiv4409151850 
#yiv4409151850activity 
{background-color:#e0ecee;float:left;font-family:Verdana;font-size:10px;padding:10px;}#yiv4409151850
 #yiv4409151850activity span {font-weight:700;}#yiv4409151850 
#yiv4409151850activity span:first-child 
{text-transform:uppercase;}#yiv4409151850 #yiv4409151850activity span a 
{color:#5085b6;text-decoration:none;}#yiv4409151850 #yiv4409151850activity span 
span {color:#ff7900;}#yiv4409151850 #yiv4409151850activity span 
.yiv4409151850underline {text-decoration:underline;}#yiv4409151850 
.yiv4409151850attach 
{clear:both;display:table;font-family:Arial;font-size:12px;padding:10px 
0;width:400px;}#yiv4409151850 .yiv4409151850attach div a 
{text-decoration:none;}#yiv4409151850 .yiv4409151850attach img 
{border:none;padding-right:5px;}#yiv4409151850 .yiv4409151850attach label 
{display:block;margin-bottom:5px;}#yiv4409151850 .yiv4409151850attach label a 
{text-decoration:none;}#yiv4409151850 blockquote {margin:0 0 0 
4px;}#yiv4409151850 .yiv4409151850bold 
{font-family:Arial;font-size:13px;font-weight:700;}#yiv4409151850 
.yiv4409151850bold a {text-decoration:none;}#yiv4409151850 dd.yiv4409151850last 
p a {font-family:Verdana;font-weight:700;}#yiv4409151850 dd.yiv4409151850last p 
span {margin-right:10px;font-family:Verdana;font-weight:700;}#yiv4409151850 
dd.yiv4409151850last p span.yiv4409151850yshortcuts 
{margin-right:0;}#yiv4409151850 div.yiv4409151850attach-table div div a 
{text-decoration:none;}#yiv4409151850 div.yiv4409151850attach-table 
{width:400px;}#yiv4409151850 div.yiv4409151850file-title a, #yiv4409151850 
div.yiv4409151850file-title a:active, #yiv4409151850 
div.yiv4409151850file-title a:hover, #yiv4409151850 div.yiv4409151850file-title 
a:visited {text-decoration:none;}#yiv4409151850 div.yiv4409151850photo-title a, 
#yiv4409151850 div.yiv4409151850photo-title a:active, #yiv4409151850 
div.yiv4409151850photo-title a:hover, #yiv4409151850 
div.yiv4409151850photo-title a:visited {text-decoration:none;}#yiv4409151850 
div#yiv4409151850ygrp-mlmsg #yiv4409151850ygrp-msg p a 
span.yiv4409151850yshortcuts 
{font-family:Verdana;font-size:10px;font-weight:normal;}#yiv4409151850 
.yiv4409151850green {color:#628c2a;}#yiv4409151850 .yiv4409151850MsoNormal 
{margin:0 0 0 0;}#yiv4409151850 o {font-size:0;}#yiv4409151850 
#yiv4409151850photos div {float:left;width:72px;}#yiv4409151850 
#yiv4409151850photos div div {border:1px solid 
#66;min-height:62px;overflow:hidden;width:62px;}#yiv4409151850 
#yiv4409151850photos div label 
{color:#66;font-size:10px;overflow:hidden;text-align:center;white-space:nowrap;width:64px;}#yiv4409151850
 #yiv4409151850reco-category {font-size

Re: [oracle_br] Re: Consulta muito lenta!!

2017-12-18 Por tôpico Rafael Mendonca raffaell.t...@yahoo.com [oracle_br]
PEssoal, o problema foi resolvido.
A solução na qual tomei como base foi a extração do relatório SQLT pelo sqlid 
da consulta. E no SQLT existia a recomendação para criação de um sqlprofile, 
que o ganho seria de 99%, após a criação do sql_profile abaixo
execute dbms_sqltune.accept_sql_profile(task_name => 
'sqlt_s47584_mem',task_owner => 'SYS', replace => TRUE);

A query que rodava em 16 minutos, passou a rodar em 3 segundos.
Valeu pessoal, obrigado a todos. 

Em Sexta-feira, 15 de Dezembro de 2017 19:43, "jlchia...@yahoo.com.br 
[oracle_br]"  escreveu:
 

     Bom, pelo prompt de SQL> eu estou SUPONDO que vc optou por criar no 
sqlplus as bind variables todas necessárias e executar o SQL via sqlplus mesmo 
né ? Bom, DEVERIA FUNCIONAR certinho mas pra teste já que é assim mete o hint 
de gather_statistics mesmo no texto que vc entra entrando no sqlplus... Se 
ainda assim não mostrar o A-ROWs E o E-ROWs já repassa essa info pro Suporte 
SAP, é um sinal indicador que alguma coisa tá MUITO diferente nesse banco

[]s

  Chiappa
   #yiv4332546053 #yiv4332546053 -- #yiv4332546053ygrp-mkp {border:1px solid 
#d8d8d8;font-family:Arial;margin:10px 0;padding:0 10px;}#yiv4332546053 
#yiv4332546053ygrp-mkp hr {border:1px solid #d8d8d8;}#yiv4332546053 
#yiv4332546053ygrp-mkp #yiv4332546053hd 
{color:#628c2a;font-size:85%;font-weight:700;line-height:122%;margin:10px 
0;}#yiv4332546053 #yiv4332546053ygrp-mkp #yiv4332546053ads 
{margin-bottom:10px;}#yiv4332546053 #yiv4332546053ygrp-mkp .yiv4332546053ad 
{padding:0 0;}#yiv4332546053 #yiv4332546053ygrp-mkp .yiv4332546053ad p 
{margin:0;}#yiv4332546053 #yiv4332546053ygrp-mkp .yiv4332546053ad a 
{color:#ff;text-decoration:none;}#yiv4332546053 #yiv4332546053ygrp-sponsor 
#yiv4332546053ygrp-lc {font-family:Arial;}#yiv4332546053 
#yiv4332546053ygrp-sponsor #yiv4332546053ygrp-lc #yiv4332546053hd {margin:10px 
0px;font-weight:700;font-size:78%;line-height:122%;}#yiv4332546053 
#yiv4332546053ygrp-sponsor #yiv4332546053ygrp-lc .yiv4332546053ad 
{margin-bottom:10px;padding:0 0;}#yiv4332546053 #yiv4332546053actions 
{font-family:Verdana;font-size:11px;padding:10px 0;}#yiv4332546053 
#yiv4332546053activity 
{background-color:#e0ecee;float:left;font-family:Verdana;font-size:10px;padding:10px;}#yiv4332546053
 #yiv4332546053activity span {font-weight:700;}#yiv4332546053 
#yiv4332546053activity span:first-child 
{text-transform:uppercase;}#yiv4332546053 #yiv4332546053activity span a 
{color:#5085b6;text-decoration:none;}#yiv4332546053 #yiv4332546053activity span 
span {color:#ff7900;}#yiv4332546053 #yiv4332546053activity span 
.yiv4332546053underline {text-decoration:underline;}#yiv4332546053 
.yiv4332546053attach 
{clear:both;display:table;font-family:Arial;font-size:12px;padding:10px 
0;width:400px;}#yiv4332546053 .yiv4332546053attach div a 
{text-decoration:none;}#yiv4332546053 .yiv4332546053attach img 
{border:none;padding-right:5px;}#yiv4332546053 .yiv4332546053attach label 
{display:block;margin-bottom:5px;}#yiv4332546053 .yiv4332546053attach label a 
{text-decoration:none;}#yiv4332546053 blockquote {margin:0 0 0 
4px;}#yiv4332546053 .yiv4332546053bold 
{font-family:Arial;font-size:13px;font-weight:700;}#yiv4332546053 
.yiv4332546053bold a {text-decoration:none;}#yiv4332546053 dd.yiv4332546053last 
p a {font-family:Verdana;font-weight:700;}#yiv4332546053 dd.yiv4332546053last p 
span {margin-right:10px;font-family:Verdana;font-weight:700;}#yiv4332546053 
dd.yiv4332546053last p span.yiv4332546053yshortcuts 
{margin-right:0;}#yiv4332546053 div.yiv4332546053attach-table div div a 
{text-decoration:none;}#yiv4332546053 div.yiv4332546053attach-table 
{width:400px;}#yiv4332546053 div.yiv4332546053file-title a, #yiv4332546053 
div.yiv4332546053file-title a:active, #yiv4332546053 
div.yiv4332546053file-title a:hover, #yiv4332546053 div.yiv4332546053file-title 
a:visited {text-decoration:none;}#yiv4332546053 div.yiv4332546053photo-title a, 
#yiv4332546053 div.yiv4332546053photo-title a:active, #yiv4332546053 
div.yiv4332546053photo-title a:hover, #yiv4332546053 
div.yiv4332546053photo-title a:visited {text-decoration:none;}#yiv4332546053 
div#yiv4332546053ygrp-mlmsg #yiv4332546053ygrp-msg p a 
span.yiv4332546053yshortcuts 
{font-family:Verdana;font-size:10px;font-weight:normal;}#yiv4332546053 
.yiv4332546053green {color:#628c2a;}#yiv4332546053 .yiv4332546053MsoNormal 
{margin:0 0 0 0;}#yiv4332546053 o {font-size:0;}#yiv4332546053 
#yiv4332546053photos div {float:left;width:72px;}#yiv4332546053 
#yiv4332546053photos div div {border:1px solid 
#66;min-height:62px;overflow:hidden;width:62px;}#yiv4332546053 
#yiv4332546053photos div label 
{color:#66;font-size:10px;overflow:hidden;text-align:center;white-space:nowrap;width:64px;}#yiv4332546053
 #yiv4332546053reco-category {font-size:77%;}#yiv4332546053 
#yiv4332546053reco-desc {font-size:77%;}#yiv4332546053 .yiv4332546053replbq 
{margin:4px;}#yiv4332546053 #yiv4332546053ygrp-actbar div a:first-child 
{margin-right:2px;padding-r

Re: [oracle_br] Re: Consulta muito lenta!!

2017-12-15 Por tôpico jlchia...@yahoo.com.br [oracle_br]
Bom, pelo prompt de SQL> eu estou SUPONDO que vc optou por criar no sqlplus as 
bind variables todas necessárias e executar o SQL via sqlplus mesmo né ? Bom, 
DEVERIA FUNCIONAR certinho mas pra teste já que é assim mete o hint de 
gather_statistics mesmo no texto que vc entra entrando no sqlplus... Se ainda 
assim não mostrar o A-ROWs E o E-ROWs já repassa essa info pro Suporte SAP, é 
um sinal indicador que alguma coisa tá MUITO diferente nesse banco

[]s

  Chiappa
 

Re: [oracle_br] Re: Consulta muito lenta!!

2017-12-15 Por tôpico Rafael Mendonca raffaell.t...@yahoo.com [oracle_br]
Exatamente pessoal, estou de acordo com voces. O chamado com a SAP ja esta 
aberto, e so alteramos algo com a autorizacao da SAP.
Chiappa, realizei o que vc me pediu, mas nao obtive sucesso, o plano de 
execucao soh me mostra o E-rows.
Alterei o parametro a nivel de sessao.
Note-   - Warning: basic plan statistics not available. These are only 
collected when:       * hint 'gather_plan_statistics' is used for the statement 
or       * parameter 'statistics_level' is set to 'ALL', at session or system 
level

51 rows selected.
SQL> show parameter statistics_level
NAME                                 TYPE        
VALUE --- 
--statistics_level                     string      
ALL
 

Em Sexta-feira, 15 de Dezembro de 2017 16:20, "jlchia...@yahoo.com.br 
[oracle_br]"  escreveu:
 

     Verdade verdadeiríssima, por isso na minha resposta frisei bem :

"Mas só porque vc PODE fazer não quer dizer que vc DEVA okdoc ? Em especial 
quando falamos de SAP, que é uma aplicação TREMENDAMENTE FECHADA, onde nem 
sequer usar a tool de backup nativa do banco eles te deixam Sendo assim, 
NECESSARIAMENTE tudo o que vou falar tem que ser feito com CONCORDÂNCIA DO 
SUPORTE DA SAP, sim sim ?? Então se não abriu Chamado lá, ABRA!!!
 "

Eu fiquei o ano passado dando Suporte em banco de dados Oracle numa Consultoria 
especializada em SAP e tools de Report/DW/Bi baseadas no SAP, então fiquei 
sabendo quem o quão fechada e exigente ela é  Sem a menor dúvida, falou em 
SAP antes de mais nada abrir Chamado, E pra qualquer coisa que for fazer, pedir 
Anuência deles

[]s

  Chiappa  #yiv9629188119 #yiv9629188119 -- #yiv9629188119ygrp-mkp {border:1px 
solid #d8d8d8;font-family:Arial;margin:10px 0;padding:0 10px;}#yiv9629188119 
#yiv9629188119ygrp-mkp hr {border:1px solid #d8d8d8;}#yiv9629188119 
#yiv9629188119ygrp-mkp #yiv9629188119hd 
{color:#628c2a;font-size:85%;font-weight:700;line-height:122%;margin:10px 
0;}#yiv9629188119 #yiv9629188119ygrp-mkp #yiv9629188119ads 
{margin-bottom:10px;}#yiv9629188119 #yiv9629188119ygrp-mkp .yiv9629188119ad 
{padding:0 0;}#yiv9629188119 #yiv9629188119ygrp-mkp .yiv9629188119ad p 
{margin:0;}#yiv9629188119 #yiv9629188119ygrp-mkp .yiv9629188119ad a 
{color:#ff;text-decoration:none;}#yiv9629188119 #yiv9629188119ygrp-sponsor 
#yiv9629188119ygrp-lc {font-family:Arial;}#yiv9629188119 
#yiv9629188119ygrp-sponsor #yiv9629188119ygrp-lc #yiv9629188119hd {margin:10px 
0px;font-weight:700;font-size:78%;line-height:122%;}#yiv9629188119 
#yiv9629188119ygrp-sponsor #yiv9629188119ygrp-lc .yiv9629188119ad 
{margin-bottom:10px;padding:0 0;}#yiv9629188119 #yiv9629188119actions 
{font-family:Verdana;font-size:11px;padding:10px 0;}#yiv9629188119 
#yiv9629188119activity 
{background-color:#e0ecee;float:left;font-family:Verdana;font-size:10px;padding:10px;}#yiv9629188119
 #yiv9629188119activity span {font-weight:700;}#yiv9629188119 
#yiv9629188119activity span:first-child 
{text-transform:uppercase;}#yiv9629188119 #yiv9629188119activity span a 
{color:#5085b6;text-decoration:none;}#yiv9629188119 #yiv9629188119activity span 
span {color:#ff7900;}#yiv9629188119 #yiv9629188119activity span 
.yiv9629188119underline {text-decoration:underline;}#yiv9629188119 
.yiv9629188119attach 
{clear:both;display:table;font-family:Arial;font-size:12px;padding:10px 
0;width:400px;}#yiv9629188119 .yiv9629188119attach div a 
{text-decoration:none;}#yiv9629188119 .yiv9629188119attach img 
{border:none;padding-right:5px;}#yiv9629188119 .yiv9629188119attach label 
{display:block;margin-bottom:5px;}#yiv9629188119 .yiv9629188119attach label a 
{text-decoration:none;}#yiv9629188119 blockquote {margin:0 0 0 
4px;}#yiv9629188119 .yiv9629188119bold 
{font-family:Arial;font-size:13px;font-weight:700;}#yiv9629188119 
.yiv9629188119bold a {text-decoration:none;}#yiv9629188119 dd.yiv9629188119last 
p a {font-family:Verdana;font-weight:700;}#yiv9629188119 dd.yiv9629188119last p 
span {margin-right:10px;font-family:Verdana;font-weight:700;}#yiv9629188119 
dd.yiv9629188119last p span.yiv9629188119yshortcuts 
{margin-right:0;}#yiv9629188119 div.yiv9629188119attach-table div div a 
{text-decoration:none;}#yiv9629188119 div.yiv9629188119attach-table 
{width:400px;}#yiv9629188119 div.yiv9629188119file-title a, #yiv9629188119 
div.yiv9629188119file-title a:active, #yiv9629188119 
div.yiv9629188119file-title a:hover, #yiv9629188119 div.yiv9629188119file-title 
a:visited {text-decoration:none;}#yiv9629188119 div.yiv9629188119photo-title a, 
#yiv9629188119 div.yiv9629188119photo-title a:active, #yiv9629188119 
div.yiv9629188119photo-title a:hover, #yiv9629188119 
div.yiv9629188119photo-title a:visited {text-decoration:none;}#yiv9629188119 
div#yiv9629188119ygrp-mlmsg #yiv9629188119ygrp-msg p a 
span.yiv9629188119yshortcuts 
{font-family:Verdana;font-size:10px;font-weight:normal;}#yiv9629188119 
.yiv9629188119green {color:#628c2a;}#yiv9629188119 .yiv9629188119MsoNormal 
{margin:

Re: [oracle_br] Re: Consulta muito lenta!!

2017-12-15 Por tôpico jlchia...@yahoo.com.br [oracle_br]
Verdade verdadeiríssima, por isso na minha resposta frisei bem :

"Mas só porque vc PODE fazer não quer dizer que vc DEVA okdoc ? Em especial 
quando falamos de SAP, que é uma aplicação TREMENDAMENTE FECHADA, onde nem 
sequer usar a tool de backup nativa do banco eles te deixam Sendo assim, 
NECESSARIAMENTE tudo o que vou falar tem que ser feito com CONCORDÂNCIA DO 
SUPORTE DA SAP, sim sim ?? Então se não abriu Chamado lá, ABRA!!!
 "

Eu fiquei o ano passado dando Suporte em banco de dados Oracle numa Consultoria 
especializada em SAP e tools de Report/DW/Bi baseadas no SAP, então fiquei 
sabendo quem o quão fechada e exigente ela é  Sem a menor dúvida, falou em 
SAP antes de mais nada abrir Chamado, E pra qualquer coisa que for fazer, pedir 
Anuência deles

[]s

  Chiappa

Re: [oracle_br] Re: Consulta muito lenta!!

2017-12-15 Por tôpico Juliano Ribeiro julianonoiz...@yahoo.com.br [oracle_br]
Boa tarde a todos,

​Gostaria apenas de complementar com um experiência que já tive com a SAP.​


O pessoal passou varias dicas boas, para tratar o seu caso/situação,
entendo que na vontade de melhorar e/ou resolver acabamos fazendo essas
"alternativas", que muitas vezes são "pontuais", "temporárias" e por fim
acabem sendo definitivas.
Mas recomendo fortemente consultar a SAP antes de exe​cutar qualquer
procedimento no ambiente, digo isso porque geralmente eles se
​eximem ​de suportar ambientes decorrentes de alterações não autorizadas
​ ou de acordo com recomendações deles​
.
Isso vem em contrato, já tomei chicotadas na vida por causa disso, por
melhor que seja a intensão de melhorar, você pode acabar de prejudicando
futuramente.
​ Porque quando da "cagada" qualquer coisa é justificativa.​


E
​m nenhum momento estou te dizendo o que fazer, apenas queria ajudar,
compartilhando uma má experiência que ja vivi com ambiente SAP.
​
Abraços.

Att.

*Juliano Ribeiro*
http://br.linkedin.com/in/supernoi


Em 15 de dezembro de 2017 15:08, jlchia...@yahoo.com.br [oracle_br] <
oracle_br@yahoogrupos.com.br> escreveu:

>
>
>
> Sim, exatamente o que sugeri na minha Obs lá pro colega : fora de prod
> testar hints, alter sessions mexendo em params do CBO, profiles, e tudo o
> mais
>
> []s
>
> Chiappa
>
> ---Em oracle_br@yahoogrupos.com.br,  escreveu:
>
> olá, boa tarde!
>
> você poderia testar o hint /*+ use_nl()*/ e ve se o resuldato melhora?
>
> se o resultado for satisfatorio, você pode aplicar esse plano para a sua
> query, com a criação de uma profile.
>
> Att,
>
>
> Em Sexta-feira, 15 de Dezembro de 2017 14:28, "jlchia...@yahoo.com.br
> [oracle_br]"  escreveu:
>
>
>
> Blz ? Vamos por partes aí : primeiro, antes de tudo, tecnicamente falando
> *** Não é verdade *** que vc não consegue mudar o texto de um SQL (para
> injetar um hint, para mudar cláusulas no WHERE, mudar tabelas no FROM,
> enfim, re-escrever o SQL) sem ter acesso ao fonte da Aplicação : minha
> Apresentação no dba brasil 1.0 (veja em http://www.dbabr.com.br/blog/
> wp-content/uploads/2016/03/SQL-Factoring.pdf) foi EXATAMENTE SOBRE ISSO,
> no caso usando a DBMS_ADVANCED_REWRITE, mas também falei de passagem sobre
> outras menos invasivas como views, sinônimos, etc... ok ? CONHEÇA as
> capacidades mas ANALISE A VIABILIDADE antes de usar...
>  Mas só porque vc PODE fazer não quer dizer que vc DEVA okdoc ? Em
> especial quando falamos de SAP, que é uma aplicação TREMENDAMENTE FECHADA,
> onde nem sequer usar a tool de backup nativa do banco eles te deixam
> Sendo assim, NECESSARIAMENTE tudo o que vou falar tem que ser feito com
> CONCORDÂNCIA DO SUPORTE DA SAP, sim sim ?? Então se não abriu Chamado lá,
> ABRA!!!
>
>  Bom, para vc começar uma análise visando tuning (E EM ESPECIAL para um
> SQL que usa & abusa de binds como parece ser esse aí!!) o Passo Inicial é
> vc obter um PLANO DE EXECUÇÃO EXTENDIDO, que mostre as colunas A-ROWs e
> E-ROWs, pra vc poder Validar se as estatísticas usadas estão razoáveis :
> veja https://blogs.oracle.com/optimizer/how-do-i-know-if-
> the-cardinality-estimates-in-a-plan-are-accurate 
>
>  Outra Possibilidade é que vc tenha BIND VARIABLE PEEKING acontecendo aí e
> o Otimizador está usando estatísticas para um determinado valor peeked numa
> execução anterior que não é de frequência comum, OU mesmo que o banco
> esteja criando Múltiplos cursores child por causa dos binds : veja
> http://optimizermagic.blogspot.com.br/2007/12/why-
> are-there-more-cursors-in-11g-for.html e http://kerryosborne.oracle-
> guy.com/2009/03/bind-variable-peeking-drives-me-nuts/ como refs...
> INCLUSIVE, a entrada https://blogs.sap.com/2013/06/
> 13/oracle-db-optimizer-part-vi-effects-of-disabled-bind-
> variable-peeking-adaptive-cursor-sharing-and-cardinality-feedback-on-the-
> cbo-in-sap-environments/ num blog da SAP mesmo já Alerta para essa
> Possibilidade, e PERCEBA que essa entrada mesmo do blog USA TAMBÉM as
> colunas A-ROWs e E-ROWs do Plano de Execução Extendido para Diagnóstico,
> sim sim ?? veja lá...
>
>  Uma outra possibilidade que vc pode Perseguir é a possibilidade que o
> Plano de Execução em si esteja o melhor possível para as condições exigidas
> MAS fisicamente na hora de executar o plano o banco tá demorando muito -
> seja porque Outros SQLs tão consumindo muita banda de rede, I/O e/o CPU não
> deixando poder de hardware pro banco executar esse seu, seja porque tá com
> montes de whitespace nos segmentos em questão, ou seja qual for
> WAITs/locks/latches tão envolvidos... Faça um TRACE 10046 level máximo de
> uma sessão executando esse SQL em questão...
>
>  E finalmente : vc Não Só deve repassar para o Suporte da SAP o tracle, o
> Plano Extendido e as suas conclusões da análise MAS também TEM que validar
> com eles esses PROFILES DE SQL, SQL patches e etc  que alguém (eles mesmos
> ?? você ??) criou, pois vi nos planos as linhas :
>
>  
>- SQL profile coe_ag6zapv5kypgx_1159570678 used for this statement
>-

Re: [oracle_br] Re: Consulta muito lenta!!

2017-12-15 Por tôpico jlchia...@yahoo.com.br [oracle_br]

 Sim, exatamente o que sugeri na minha Obs lá pro colega : fora de prod testar 
hints, alter sessions mexendo em params do CBO, profiles, e tudo o mais
 

 []s
 

 Chiappa
 

 ---Em oracle_br@yahoogrupos.com.br,  escreveu:

 olá, boa tarde!
 

 você poderia testar o hint /*+ use_nl()*/ e ve se o resuldato melhora?
 

 se o resultado for satisfatorio, você pode aplicar esse plano para a sua 
query, com a criação de uma profile.
 

 
 Att,
 


 Em Sexta-feira, 15 de Dezembro de 2017 14:28, "jlchia...@yahoo.com.br 
[oracle_br]"  escreveu:

 

   Blz ? Vamos por partes aí : primeiro, antes de tudo, tecnicamente falando 
*** Não é verdade *** que vc não consegue mudar o texto de um SQL (para injetar 
um hint, para mudar cláusulas no WHERE, mudar tabelas no FROM, enfim, 
re-escrever o SQL) sem ter acesso ao fonte da Aplicação : minha Apresentação no 
dba brasil 1.0 (veja em 
http://www.dbabr.com.br/blog/wp-content/uploads/2016/03/SQL-Factoring.pdf) foi 
EXATAMENTE SOBRE ISSO, no caso usando a DBMS_ADVANCED_REWRITE, mas também falei 
de passagem sobre outras menos invasivas como views, sinônimos, etc... ok ? 
CONHEÇA as capacidades mas ANALISE A VIABILIDADE antes de usar...
 Mas só porque vc PODE fazer não quer dizer que vc DEVA okdoc ? Em especial 
quando falamos de SAP, que é uma aplicação TREMENDAMENTE FECHADA, onde nem 
sequer usar a tool de backup nativa do banco eles te deixam Sendo assim, 
NECESSARIAMENTE tudo o que vou falar tem que ser feito com CONCORDÂNCIA DO 
SUPORTE DA SAP, sim sim ?? Então se não abriu Chamado lá, ABRA!!!
 
 Bom, para vc começar uma análise visando tuning (E EM ESPECIAL para um SQL que 
usa & abusa de binds como parece ser esse aí!!) o Passo Inicial é vc obter um 
PLANO DE EXECUÇÃO EXTENDIDO, que mostre as colunas A-ROWs e E-ROWs, pra vc 
poder Validar se as estatísticas usadas estão razoáveis : veja 
https://blogs.oracle.com/optimizer/how-do-i-know-if-the-cardinality-estimates-in-a-plan-are-accurate
 
 
 Outra Possibilidade é que vc tenha BIND VARIABLE PEEKING acontecendo aí e o 
Otimizador está usando estatísticas para um determinado valor peeked numa 
execução anterior que não é de frequência comum, OU mesmo que o banco esteja 
criando Múltiplos cursores child por causa dos binds : veja 
http://optimizermagic.blogspot.com.br/2007/12/why-are-there-more-cursors-in-11g-for.html
 e 
http://kerryosborne.oracle-guy.com/2009/03/bind-variable-peeking-drives-me-nuts/
 como refs... INCLUSIVE, a entrada 
https://blogs.sap.com/2013/06/13/oracle-db-optimizer-part-vi-effects-of-disabled-bind-variable-peeking-adaptive-cursor-sharing-and-cardinality-feedback-on-the-cbo-in-sap-environments/
 num blog da SAP mesmo já Alerta para essa Possibilidade, e PERCEBA que essa 
entrada mesmo do blog USA TAMBÉM as colunas A-ROWs e E-ROWs do Plano de 
Execução Extendido para Diagnóstico, sim sim ?? veja lá...
 
 Uma outra possibilidade que vc pode Perseguir é a possibilidade que o Plano de 
Execução em si esteja o melhor possível para as condições exigidas MAS 
fisicamente na hora de executar o plano o banco tá demorando muito - seja 
porque Outros SQLs tão consumindo muita banda de rede, I/O e/o CPU não deixando 
poder de hardware pro banco executar esse seu, seja porque tá com montes de 
whitespace nos segmentos em questão, ou seja qual for WAITs/locks/latches tão 
envolvidos... Faça um TRACE 10046 level máximo de uma sessão executando esse 
SQL em questão...
 
 E finalmente : vc Não Só deve repassar para o Suporte da SAP o tracle, o Plano 
Extendido e as suas conclusões da análise MAS também TEM que validar com eles 
esses PROFILES DE SQL, SQL patches e etc  que alguém (eles mesmos ?? você ??) 
criou, pois vi nos planos as linhas :
 
 
   - SQL profile coe_ag6zapv5kypgx_1159570678 used for this statement
   - SQL patch "suggest_support_sap" used for this statement
 
 []s
 
   Chiappa
   
  OBS : para fins de Análise, já que vc Identificou o SQL, nada Impede que vc, 
no seu banco de TESTE mas que tenha um volume Razoável de dados, experimentar 
HINTs, criar outros índices,  alterar o SQL para que faça acesso à chave 
COMPLETA do índice (e não à chave parcial, que deduzo estar acontecendo por 
causa dos "INDEX RANGE SCAN" e "INDEX SKIP SCAN" que vi)... QUalquer informação 
que vc obtenha nesses testes Repasse pro Suporte SAP...

 


 












Re: [oracle_br] Re: Consulta muito lenta!!

2017-12-15 Por tôpico jlchia...@yahoo.com.br [oracle_br]
Usa a opção de criar BIND VARIABLEs da tua tool cliente (no SQLPLUS seria 
VARIABLE, por exemplo) e cria todos os BINDs necessários e bota os valores 
neles , ou AINDA MELHOR, se for possível vc alterar apenas uma sessão na 
aplicação pra executar com o parâmetro de STATISTICS_LEVEL para all (via ALTER 
SESSION SET STATISTICS_LEVEL=ALL numa trigger de logon que dispara só pra 
sessão/usuário/serviço/seja o que for que vc está usando pra testes, talvez) vc 
faz isso : esse parâmetro STATISTICS_LEVEL pode ser setado a nível de sessão ou 
de banco, e faz o mesmo que o HINt de GATHER STATISTICS...

[]s

  Chiappa

Re: [oracle_br] Re: Consulta muito lenta!!

2017-12-15 Por tôpico Rafael Mendonca raffaell.t...@yahoo.com [oracle_br]
Chiappa, a recomendacao foi da SAP, irei checar todas essas informacoes 
passadas por voces, no fim do dia darei um retorno aqui.
Em relacao ao plano extendido com SELECT /*+ GATHER_PLAN_STATISTICS */como eu 
vou executar com as variaveis bind? Com variavel bind o select me retorna o 
erro informando que nao reconhece aquele valor obviamente.


SP2-0552: Bind variable "A4" not declared.
 

Em Sexta-feira, 15 de Dezembro de 2017 14:28, "jlchia...@yahoo.com.br 
[oracle_br]"  escreveu:
 

     Blz ? Vamos por partes aí : primeiro, antes de tudo, tecnicamente falando 
*** Não é verdade *** que vc não consegue mudar o texto de um SQL (para injetar 
um hint, para mudar cláusulas no WHERE, mudar tabelas no FROM, enfim, 
re-escrever o SQL) sem ter acesso ao fonte da Aplicação : minha Apresentação no 
dba brasil 1.0 (veja em 
http://www.dbabr.com.br/blog/wp-content/uploads/2016/03/SQL-Factoring.pdf) foi 
EXATAMENTE SOBRE ISSO, no caso usando a DBMS_ADVANCED_REWRITE, mas também falei 
de passagem sobre outras menos invasivas como views, sinônimos, etc... ok ? 
CONHEÇA as capacidades mas ANALISE A VIABILIDADE antes de usar...
 Mas só porque vc PODE fazer não quer dizer que vc DEVA okdoc ? Em especial 
quando falamos de SAP, que é uma aplicação TREMENDAMENTE FECHADA, onde nem 
sequer usar a tool de backup nativa do banco eles te deixam Sendo assim, 
NECESSARIAMENTE tudo o que vou falar tem que ser feito com CONCORDÂNCIA DO 
SUPORTE DA SAP, sim sim ?? Então se não abriu Chamado lá, ABRA!!!
 
 Bom, para vc começar uma análise visando tuning (E EM ESPECIAL para um SQL que 
usa & abusa de binds como parece ser esse aí!!) o Passo Inicial é vc obter um 
PLANO DE EXECUÇÃO EXTENDIDO, que mostre as colunas A-ROWs e E-ROWs, pra vc 
poder Validar se as estatísticas usadas estão razoáveis : veja 
https://blogs.oracle.com/optimizer/how-do-i-know-if-the-cardinality-estimates-in-a-plan-are-accurate
 
 
 Outra Possibilidade é que vc tenha BIND VARIABLE PEEKING acontecendo aí e o 
Otimizador está usando estatísticas para um determinado valor peeked numa 
execução anterior que não é de frequência comum, OU mesmo que o banco esteja 
criando Múltiplos cursores child por causa dos binds : veja 
http://optimizermagic.blogspot.com.br/2007/12/why-are-there-more-cursors-in-11g-for.html
 e 
http://kerryosborne.oracle-guy.com/2009/03/bind-variable-peeking-drives-me-nuts/
 como refs... INCLUSIVE, a entrada 
https://blogs.sap.com/2013/06/13/oracle-db-optimizer-part-vi-effects-of-disabled-bind-variable-peeking-adaptive-cursor-sharing-and-cardinality-feedback-on-the-cbo-in-sap-environments/
 num blog da SAP mesmo já Alerta para essa Possibilidade, e PERCEBA que essa 
entrada mesmo do blog USA TAMBÉM as colunas A-ROWs e E-ROWs do Plano de 
Execução Extendido para Diagnóstico, sim sim ?? veja lá...
 
 Uma outra possibilidade que vc pode Perseguir é a possibilidade que o Plano de 
Execução em si esteja o melhor possível para as condições exigidas MAS 
fisicamente na hora de executar o plano o banco tá demorando muito - seja 
porque Outros SQLs tão consumindo muita banda de rede, I/O e/o CPU não deixando 
poder de hardware pro banco executar esse seu, seja porque tá com montes de 
whitespace nos segmentos em questão, ou seja qual for WAITs/locks/latches tão 
envolvidos... Faça um TRACE 10046 level máximo de uma sessão executando esse 
SQL em questão...
 
 E finalmente : vc Não Só deve repassar para o Suporte da SAP o tracle, o Plano 
Extendido e as suas conclusões da análise MAS também TEM que validar com eles 
esses PROFILES DE SQL, SQL patches e etc  que alguém (eles mesmos ?? você ??) 
criou, pois vi nos planos as linhas :
 
 
   - SQL profile coe_ag6zapv5kypgx_1159570678 used for this statement
   - SQL patch "suggest_support_sap" used for this statement
 
 []s
 
   Chiappa
   
  OBS : para fins de Análise, já que vc Identificou o SQL, nada Impede que vc, 
no seu banco de TESTE mas que tenha um volume Razoável de dados, experimentar 
HINTs, criar outros índices,  alterar o SQL para que faça acesso à chave 
COMPLETA do índice (e não à chave parcial, que deduzo estar acontecendo por 
causa dos "INDEX RANGE SCAN" e "INDEX SKIP SCAN" que vi)... QUalquer informação 
que vc obtenha nesses testes Repasse pro Suporte SAP...  #yiv8130852198 
#yiv8130852198 -- #yiv8130852198ygrp-mkp {border:1px solid 
#d8d8d8;font-family:Arial;margin:10px 0;padding:0 10px;}#yiv8130852198 
#yiv8130852198ygrp-mkp hr {border:1px solid #d8d8d8;}#yiv8130852198 
#yiv8130852198ygrp-mkp #yiv8130852198hd 
{color:#628c2a;font-size:85%;font-weight:700;line-height:122%;margin:10px 
0;}#yiv8130852198 #yiv8130852198ygrp-mkp #yiv8130852198ads 
{margin-bottom:10px;}#yiv8130852198 #yiv8130852198ygrp-mkp .yiv8130852198ad 
{padding:0 0;}#yiv8130852198 #yiv8130852198ygrp-mkp .yiv8130852198ad p 
{margin:0;}#yiv8130852198 #yiv8130852198ygrp-mkp .yiv8130852198ad a 
{color:#ff;text-decoration:none;}#yiv8130852198 #yiv8130852198ygrp-sponsor 
#yiv8130852198ygrp-lc {font-family:Ari

Re: [oracle_br] Re: Consulta muito lenta!!

2017-12-15 Por tôpico Junior Cesar juniorcesa...@yahoo.com.br [oracle_br]
olá, boa tarde!
você poderia testar o hint /*+ use_nl()*/ e ve se o resuldato melhora?
se o resultado for satisfatorio, você pode aplicar esse plano para a sua query, 
com a criação de uma profile.
Att, 

Em Sexta-feira, 15 de Dezembro de 2017 14:28, "jlchia...@yahoo.com.br 
[oracle_br]"  escreveu:
 

     Blz ? Vamos por partes aí : primeiro, antes de tudo, tecnicamente falando 
*** Não é verdade *** que vc não consegue mudar o texto de um SQL (para injetar 
um hint, para mudar cláusulas no WHERE, mudar tabelas no FROM, enfim, 
re-escrever o SQL) sem ter acesso ao fonte da Aplicação : minha Apresentação no 
dba brasil 1.0 (veja em 
http://www.dbabr.com.br/blog/wp-content/uploads/2016/03/SQL-Factoring.pdf) foi 
EXATAMENTE SOBRE ISSO, no caso usando a DBMS_ADVANCED_REWRITE, mas também falei 
de passagem sobre outras menos invasivas como views, sinônimos, etc... ok ? 
CONHEÇA as capacidades mas ANALISE A VIABILIDADE antes de usar...
 Mas só porque vc PODE fazer não quer dizer que vc DEVA okdoc ? Em especial 
quando falamos de SAP, que é uma aplicação TREMENDAMENTE FECHADA, onde nem 
sequer usar a tool de backup nativa do banco eles te deixam Sendo assim, 
NECESSARIAMENTE tudo o que vou falar tem que ser feito com CONCORDÂNCIA DO 
SUPORTE DA SAP, sim sim ?? Então se não abriu Chamado lá, ABRA!!!
 
 Bom, para vc começar uma análise visando tuning (E EM ESPECIAL para um SQL que 
usa & abusa de binds como parece ser esse aí!!) o Passo Inicial é vc obter um 
PLANO DE EXECUÇÃO EXTENDIDO, que mostre as colunas A-ROWs e E-ROWs, pra vc 
poder Validar se as estatísticas usadas estão razoáveis : veja 
https://blogs.oracle.com/optimizer/how-do-i-know-if-the-cardinality-estimates-in-a-plan-are-accurate
 
 
 Outra Possibilidade é que vc tenha BIND VARIABLE PEEKING acontecendo aí e o 
Otimizador está usando estatísticas para um determinado valor peeked numa 
execução anterior que não é de frequência comum, OU mesmo que o banco esteja 
criando Múltiplos cursores child por causa dos binds : veja 
http://optimizermagic.blogspot.com.br/2007/12/why-are-there-more-cursors-in-11g-for.html
 e 
http://kerryosborne.oracle-guy.com/2009/03/bind-variable-peeking-drives-me-nuts/
 como refs... INCLUSIVE, a entrada 
https://blogs.sap.com/2013/06/13/oracle-db-optimizer-part-vi-effects-of-disabled-bind-variable-peeking-adaptive-cursor-sharing-and-cardinality-feedback-on-the-cbo-in-sap-environments/
 num blog da SAP mesmo já Alerta para essa Possibilidade, e PERCEBA que essa 
entrada mesmo do blog USA TAMBÉM as colunas A-ROWs e E-ROWs do Plano de 
Execução Extendido para Diagnóstico, sim sim ?? veja lá...
 
 Uma outra possibilidade que vc pode Perseguir é a possibilidade que o Plano de 
Execução em si esteja o melhor possível para as condições exigidas MAS 
fisicamente na hora de executar o plano o banco tá demorando muito - seja 
porque Outros SQLs tão consumindo muita banda de rede, I/O e/o CPU não deixando 
poder de hardware pro banco executar esse seu, seja porque tá com montes de 
whitespace nos segmentos em questão, ou seja qual for WAITs/locks/latches tão 
envolvidos... Faça um TRACE 10046 level máximo de uma sessão executando esse 
SQL em questão...
 
 E finalmente : vc Não Só deve repassar para o Suporte da SAP o tracle, o Plano 
Extendido e as suas conclusões da análise MAS também TEM que validar com eles 
esses PROFILES DE SQL, SQL patches e etc  que alguém (eles mesmos ?? você ??) 
criou, pois vi nos planos as linhas :
 
 
   - SQL profile coe_ag6zapv5kypgx_1159570678 used for this statement
   - SQL patch "suggest_support_sap" used for this statement
 
 []s
 
   Chiappa
   
  OBS : para fins de Análise, já que vc Identificou o SQL, nada Impede que vc, 
no seu banco de TESTE mas que tenha um volume Razoável de dados, experimentar 
HINTs, criar outros índices,  alterar o SQL para que faça acesso à chave 
COMPLETA do índice (e não à chave parcial, que deduzo estar acontecendo por 
causa dos "INDEX RANGE SCAN" e "INDEX SKIP SCAN" que vi)... QUalquer informação 
que vc obtenha nesses testes Repasse pro Suporte SAP...  #yiv5259282637 
#yiv5259282637 -- #yiv5259282637ygrp-mkp {border:1px solid 
#d8d8d8;font-family:Arial;margin:10px 0;padding:0 10px;}#yiv5259282637 
#yiv5259282637ygrp-mkp hr {border:1px solid #d8d8d8;}#yiv5259282637 
#yiv5259282637ygrp-mkp #yiv5259282637hd 
{color:#628c2a;font-size:85%;font-weight:700;line-height:122%;margin:10px 
0;}#yiv5259282637 #yiv5259282637ygrp-mkp #yiv5259282637ads 
{margin-bottom:10px;}#yiv5259282637 #yiv5259282637ygrp-mkp .yiv5259282637ad 
{padding:0 0;}#yiv5259282637 #yiv5259282637ygrp-mkp .yiv5259282637ad p 
{margin:0;}#yiv5259282637 #yiv5259282637ygrp-mkp .yiv5259282637ad a 
{color:#ff;text-decoration:none;}#yiv5259282637 #yiv5259282637ygrp-sponsor 
#yiv5259282637ygrp-lc {font-family:Arial;}#yiv5259282637 
#yiv5259282637ygrp-sponsor #yiv5259282637ygrp-lc #yiv5259282637hd {margin:10px 
0px;font-weight:700;font-size:78%;line-height:122%;}#yiv5259282637 
#yiv5259282637ygrp-s

[oracle_br] Re: Consulta muito lenta!!

2017-12-15 Por tôpico jlchia...@yahoo.com.br [oracle_br]
Blz ? Vamos por partes aí : primeiro, antes de tudo, tecnicamente falando *** 
Não é verdade *** que vc não consegue mudar o texto de um SQL (para injetar um 
hint, para mudar cláusulas no WHERE, mudar tabelas no FROM, enfim, re-escrever 
o SQL) sem ter acesso ao fonte da Aplicação : minha Apresentação no dba brasil 
1.0 (veja em 
http://www.dbabr.com.br/blog/wp-content/uploads/2016/03/SQL-Factoring.pdf) foi 
EXATAMENTE SOBRE ISSO, no caso usando a DBMS_ADVANCED_REWRITE, mas também falei 
de passagem sobre outras menos invasivas como views, sinônimos, etc... ok ? 
CONHEÇA as capacidades mas ANALISE A VIABILIDADE antes de usar...
 Mas só porque vc PODE fazer não quer dizer que vc DEVA okdoc ? Em especial 
quando falamos de SAP, que é uma aplicação TREMENDAMENTE FECHADA, onde nem 
sequer usar a tool de backup nativa do banco eles te deixam Sendo assim, 
NECESSARIAMENTE tudo o que vou falar tem que ser feito com CONCORDÂNCIA DO 
SUPORTE DA SAP, sim sim ?? Então se não abriu Chamado lá, ABRA!!!
 
 Bom, para vc começar uma análise visando tuning (E EM ESPECIAL para um SQL que 
usa & abusa de binds como parece ser esse aí!!) o Passo Inicial é vc obter um 
PLANO DE EXECUÇÃO EXTENDIDO, que mostre as colunas A-ROWs e E-ROWs, pra vc 
poder Validar se as estatísticas usadas estão razoáveis : veja 
https://blogs.oracle.com/optimizer/how-do-i-know-if-the-cardinality-estimates-in-a-plan-are-accurate
 
 
 Outra Possibilidade é que vc tenha BIND VARIABLE PEEKING acontecendo aí e o 
Otimizador está usando estatísticas para um determinado valor peeked numa 
execução anterior que não é de frequência comum, OU mesmo que o banco esteja 
criando Múltiplos cursores child por causa dos binds : veja 
http://optimizermagic.blogspot.com.br/2007/12/why-are-there-more-cursors-in-11g-for.html
 e 
http://kerryosborne.oracle-guy.com/2009/03/bind-variable-peeking-drives-me-nuts/
 como refs... INCLUSIVE, a entrada 
https://blogs.sap.com/2013/06/13/oracle-db-optimizer-part-vi-effects-of-disabled-bind-variable-peeking-adaptive-cursor-sharing-and-cardinality-feedback-on-the-cbo-in-sap-environments/
 num blog da SAP mesmo já Alerta para essa Possibilidade, e PERCEBA que essa 
entrada mesmo do blog USA TAMBÉM as colunas A-ROWs e E-ROWs do Plano de 
Execução Extendido para Diagnóstico, sim sim ?? veja lá...
 
 Uma outra possibilidade que vc pode Perseguir é a possibilidade que o Plano de 
Execução em si esteja o melhor possível para as condições exigidas MAS 
fisicamente na hora de executar o plano o banco tá demorando muito - seja 
porque Outros SQLs tão consumindo muita banda de rede, I/O e/o CPU não deixando 
poder de hardware pro banco executar esse seu, seja porque tá com montes de 
whitespace nos segmentos em questão, ou seja qual for WAITs/locks/latches tão 
envolvidos... Faça um TRACE 10046 level máximo de uma sessão executando esse 
SQL em questão...
 
 E finalmente : vc Não Só deve repassar para o Suporte da SAP o tracle, o Plano 
Extendido e as suas conclusões da análise MAS também TEM que validar com eles 
esses PROFILES DE SQL, SQL patches e etc  que alguém (eles mesmos ?? você ??) 
criou, pois vi nos planos as linhas :
 
 
   - SQL profile coe_ag6zapv5kypgx_1159570678 used for this statement
   - SQL patch "suggest_support_sap" used for this statement
 
 []s
 
   Chiappa
   
  OBS : para fins de Análise, já que vc Identificou o SQL, nada Impede que vc, 
no seu banco de TESTE mas que tenha um volume Razoável de dados, experimentar 
HINTs, criar outros índices,  alterar o SQL para que faça acesso à chave 
COMPLETA do índice (e não à chave parcial, que deduzo estar acontecendo por 
causa dos "INDEX RANGE SCAN" e "INDEX SKIP SCAN" que vi)... QUalquer informação 
que vc obtenha nesses testes Repasse pro Suporte SAP...

RES: [oracle_br] Re: Consulta SQL

2016-10-21 Por tôpico 'Carlos Henrique' carl_oracle...@yahoo.com.br [oracle_br]
Obrigado Chiappa, eu tinha visto alguns dos links que vc informou.

Vou fazer as verificações.

 

Novamente, obrigado.

 

Carlos Henrique

 

De: oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br] 
Enviada em: sexta-feira, 21 de outubro de 2016 16:34
Para: oracle_br@yahoogrupos.com.br
Assunto: [oracle_br] Re: Consulta SQL

 



Bom, se rodando o SQL fora da aplicação mas conectado no mesmo 
banco/usuário/etc vc obtém o retorno desejado, mas o Exato Mesmo SQL pela 
aplicação falha, tá *** TOTALMENTE COMPROVADO *** que é uma questão FORA DO 
BANCO, então a maioria de nós, especialistas em banco que somos aqui, Não Vamos 
ter como te ajudar O que vc pode fazer aí é :

a. usar os recursos que a tua tool de programação te dê (junto, talvez, com um 
TRACE DE SQL na sessão que ela abre no banco) pra se Certificar que o stack da 
aplicação (ie, drivers, métodos de conexão ao banco, geradores de SQL, etc, 
etc) NÂO estão alterando de forma nenhuma o SQL que vai ser mandado pro banco, 
confirmando que ele está 100% Idêntico ao que roda com sucesso por fora da 
aplicação 

b. dar ** todos ** os detalhes de versão de PHP, webserver, drivers em uso, 
etc, E criar um caso de teste mínimo onde a questão apareça, para que algum 
EVentual progrtamador PHP que passe aqui pelo Fórum possa reproduzir sua issue 
e palpitar em cima

Sobre performance, sim : se o volume de dados for significativo, pode sim ser 
interessante se usar o operador CONTAINS ao invés do LIKE trabalhando em cima 
de um índice de texto - http://www.orafaq.com/node/1918 , 
https://asktom.oracle.com/pls/apex/f?p=100:11:0P11_QUESTION_ID:73326990501799
 e 
http://use-the-index-luke.com/sql/where-clause/searching-for-ranges/like-performance-tuning
 são exemplos... 

[]s

  Chiappa 








[oracle_br] Re: Consulta SQL

2016-10-21 Por tôpico jlchia...@yahoo.com.br [oracle_br]
Bom, se rodando o SQL fora da aplicação mas conectado no mesmo 
banco/usuário/etc vc obtém o retorno desejado, mas o Exato Mesmo SQL pela 
aplicação falha, tá *** TOTALMENTE COMPROVADO *** que é uma questão FORA DO 
BANCO, então a maioria de nós, especialistas em banco que somos aqui, Não Vamos 
ter como te ajudar O que vc pode fazer aí é :

a. usar os recursos que a tua tool de programação te dê (junto, talvez, com um 
TRACE DE SQL na sessão que ela abre no banco) pra se Certificar que o stack da 
aplicação (ie, drivers, métodos de conexão ao banco, geradores de SQL, etc, 
etc) NÂO estão alterando de forma nenhuma o SQL que vai ser mandado pro banco, 
confirmando que ele está 100% Idêntico ao que roda com sucesso por fora da 
aplicação 

b. dar ** todos ** os detalhes de versão de PHP, webserver, drivers em uso, 
etc, E criar um caso de teste mínimo onde a questão apareça, para que algum 
EVentual progrtamador PHP que passe aqui pelo Fórum possa reproduzir sua issue 
e palpitar em cima

Sobre performance, sim : se o volume de dados for significativo, pode sim ser 
interessante se usar o operador CONTAINS ao invés do LIKE trabalhando em cima 
de um índice de texto - http://www.orafaq.com/node/1918 , 
https://asktom.oracle.com/pls/apex/f?p=100:11:0P11_QUESTION_ID:73326990501799
 e 
http://use-the-index-luke.com/sql/where-clause/searching-for-ranges/like-performance-tuning
 são exemplos... 

[]s

  Chiappa

[oracle_br] Re: Consulta com data para quinto dia do mês.

2014-08-08 Por tôpico erisva...@ymail.com [oracle_br]
Pessoal, obrigado!!  

 Consegui resolver o meu problema, agora não preciso mais estar alterando data. 
 Ficou muito legal, Brigadão a todos.
 

 atc, 
 

 Erisvaldo
 

 

 




[oracle_br] Re: Consulta com data para quinto dia do mês.

2014-08-08 Por tôpico jlchia...@yahoo.com.br [oracle_br]
Isso é *** pachorrentamente Fácil *** , creio - como sabemos, para vc pegar o 
dia Inicial do Mês indicado no SYSDATE, basta um TRUNC, ** e ** para vc trazer 
o Próximo mês em relação ao SYSDATE, é ADD_MONTHS :

12:32:20 SYS@db:SQL>select trunc(add_months(sysdate,1), 'MONTH') from dual;

TRUNC(AD

01/09/14

=> pegando os dias da semana :

12:39:41 SYS@db:SQL>ed
Gravou file afiedt.buf

  1  select DATA_DO_MES, rownum rr, to_char(data_do_mes, 'dy', 
'nls_date_language=AMERICAN')
  2from (select trunc(add_months(sysdate,1), 'MONTH')+ (r-1) DATA_DO_MES
  3   from (select rownum r from all_objects where 
rownum < 15)
  4* order by 1 
   )
12:40:46 SYS@db:SQL>/

DATA_DO_MES RR TO_
--- -- ---
01/09/2014 00:00:00  1 mon
02/09/2014 00:00:00  2 tue
03/09/2014 00:00:00  3 wed
04/09/2014 00:00:00  4 thu
05/09/2014 00:00:00  5 fri
06/09/2014 00:00:00  6 sat
07/09/2014 00:00:00  7 sun
08/09/2014 00:00:00  8 mon
09/09/2014 00:00:00  9 tue
10/09/2014 00:00:00 10 wed
11/09/2014 00:00:00 11 thu
12/09/2014 00:00:00 12 fri
13/09/2014 00:00:00 13 sat
14/09/2014 00:00:00 14 sun

14 linhas selecionadas.

=> lista tirando sábado & domingo :

12:40:48 SYS@db:SQL>ed
Gravou file afiedt.buf

  1  select DATA_DO_MES, rownum rr, to_char(data_do_mes, 'dy', 
'nls_date_language=AMERICAN')
  2from (select trunc(add_months(sysdate,1), 'MONTH')+ (r-1) DATA_DO_MES
  3   from (select rownum r from all_objects where 
rownum < 15)
  4  order by 1 
   )
  5*  where to_char(data_do_mes, 'dy', 'nls_date_language=AMERICAN') not in 
('sat', 'sun')
12:43:03 SYS@db:SQL>/

DATA_DO_MES RR TO_
--- -- ---
01/09/2014 00:00:00  1 mon
02/09/2014 00:00:00  2 tue
03/09/2014 00:00:00  3 wed
04/09/2014 00:00:00  4 thu
05/09/2014 00:00:00  5 fri
08/09/2014 00:00:00  6 mon
09/09/2014 00:00:00  7 tue
10/09/2014 00:00:00  8 wed
11/09/2014 00:00:00  9 thu
12/09/2014 00:00:00 10 fri

10 linhas selecionadas.

12:43:04 SYS@db:SQL>

==> Ao que Entendo, ** continua ** sendo uma questão de restringir a 5ª linha :

12:43:04 SYS@db:SQL>ed
Gravou file afiedt.buf

  1  select DATA_DO_MES from (
  2  select DATA_DO_MES, rownum rr, to_char(data_do_mes, 'dy', 
'nls_date_language=AMERICAN')
  3from (select trunc(add_months(sysdate,1), 'MONTH')+ (r-1) DATA_DO_MES
  4   from (select rownum r from all_objects where 
rownum < 15)
  5  order by 1 
   )
  6   where to_char(data_do_mes, 'dy', 'nls_date_language=AMERICAN') not in 
('sat', 'sun')
  7 )
  8*  where rr=5
12:44:48 SYS@db:SQL>/

DATA_DO_MES
---
05/09/2014 00:00:00

 []s

  Chiappa

[oracle_br] Re: Consulta com data para quinto dia do mês.

2014-08-08 Por tôpico erisva...@ymail.com [oracle_br]
amigos, obrigado,  

 compreendi, mas vendo as soluções, percebi que eu esqueci de 
 mencionar algo. no meu caso, teria que considerar o mes atual, 
 ou seja,  a operacao teria que incluir o sysdate. 
 

 exemplo:  '08/08/2014'  + algo  =  05/09/2014. de forma que sem eu 
 estar definindo a data já retorne o dia 05/09/2014 (data de exemplo). 
 

 nao sei se estou querendo muito, mas 
 de qualquer forma os exemplos enviados já me serao uteis. 
 

 agradeco,
 

 Erisvaldo. 
 

 

 

 

 



[oracle_br] Re: Consulta com data para quinto dia do mês.

2014-08-08 Por tôpico jlchia...@yahoo.com.br [oracle_br]
Colega, se vc dizer "5º dia do mês", como ** TODO ** mês começa no dia 1 eu 
responderia dia 05 mesmo, yes ??? Se não é isso o que vc quer, será que vc não 
quer dizer "5º dia ** EXCLUINDO Sábados e Domingos", por exemplo ??? 
 Se é isso, vc quer montar isso em SQL (para usar numa query sua), ** ou ** é 
em PL/SQL (para usar no JOB, por exemplo) ??? De qquer forma, a lógica é 
relativamente simples : vc monta uma sub-query criando valores a partir do dia 
01 do mês que vc quer, pede pra excluir sábados & domingos, ordena e lista a 5ª 
linha... Um exemplo (NEM DE LONGE o melhor/mais prático, é Só Um Exemplo!!) 
implementando a lógica em SQL :

==> gero a lista sequencial dos dias a partir do dia 01 :

11:49:18 SYS:AS SYSDBA@DB:SQL>select to_date('01/08/2014', 'dd/mm/')+ (r-1) 
from (
11:53:49   2 select rownum r from all_objects where rownum < 15)
11:53:49   3  ;

TO_DATE(

01/08/14
02/08/14
03/08/14
04/08/14
05/08/14
06/08/14
07/08/14
08/08/14
09/08/14
10/08/14
11/08/14
12/08/14
13/08/14
14/08/14

14 linhas selecionadas.

==> elimino Sábado & Domingo :

11:53:55 SYS:AS SYSDBA@DB:SQL>select * from (
11:55:25   2 select to_date('01/08/2014', 'dd/mm/')+ (r-1) DATA_DO_MES
11:55:25   3   from (select rownum r from all_objects where rownum < 15)
11:55:25   4   order by 1
11:55:25   5 )
11:55:25   6   where to_char(data_do_mes, 'dy', 'nls_date_language=AMERICAN') 
not in ('sun' , 'sat')
11:55:25   7  ;

DATA_DO_

01/08/14
04/08/14
05/08/14
06/08/14
07/08/14
08/08/14
11/08/14
12/08/14
13/08/14
14/08/14

10 linhas selecionadas.

==> o 5º dia é simplesmente a 5ª linha da lista acima... Numero as linhas  :

11:57:42 SYS:AS SYSDBA@DB:SQL>ed
Gravou file afiedt.buf

  1  select DATA_DO_MES, rownum from (
  2 select to_date('01/08/2014', 'dd/mm/')+ (r-1) DATA_DO_MES
  3   from (select rownum r from all_objects where rownum < 15)
  4   order by 1
  5 )
  6*  where to_char(data_do_mes, 'dy', 'nls_date_language=AMERICAN') not in 
('sun' , 'sat')
11:58:34 SYS:AS SYSDBA@DB:SQL>/

DATA_DO_ ROWNUM
 --
01/08/14  1
04/08/14  2
05/08/14  3
06/08/14  4
07/08/14  5
08/08/14  6
11/08/14  7
12/08/14  8
13/08/14  9
14/08/14 10

10 linhas selecionadas.

==> e mando vir só a 5ª linha :

11:59:18 SYS:AS SYSDBA@DB:SQL>ed
Gravou file afiedt.buf

  1  select data_DO_MES from (select DATA_DO_MES, rownum rr from (
  2 select to_date('01/08/2014', 'dd/mm/')+ 
(r-1) DATA_DO_MES
  3   from (select rownum r from all_objects where 
rownum < 15)
  4  order by 1
  5   )
  6   where to_char(data_do_mes, 'dy', 'nls_date_language=AMERICAN') not in 
('sun' , 'sat')
  7  )
  8* where rr = 5
12:00:01 SYS:AS SYSDBA@DB:SQL>/

DATA_DO_

07/08/14


===> right ??? Cheguei no 5º dia sem contar Sábados & Domingos ** REPITO ** 
, o exemplo não é o mais didático possível, e CERTAMENTE se aplicasse analytics 
pra achar a 5ª linha ia ficar *** MUITO ** mais enxuto, e nem sequer a 
implementação tá mega-eficiente, mas tá demonstrada a técnica, blz ??

 []s

   Chiappa

[oracle_br] Re: Consulta com data para quinto dia do mês.

2014-08-08 Por tôpico fca_anali...@yahoo.com.br [oracle_br]
Erisvaldo, 

 A solução proposta pelo Eduardo não te atendeu?
Eu também havia pensado parecido e escrevi o select abaixo:
 --> Não sei se é isso que você precisava.
 

 

 select last_day('03/02/2014')+5 from dual;
 

 Retorna = '05/03/2014' (mês seguinte)
 

 select last_day(add_months('03/02/2014',-1))+5 from dual;
 

 Retorna = '05/02/2014' (mês atual)

 



Re: [oracle_br] Re: Consulta ao Grupo - Off Topic

2014-03-18 Por tôpico Eduardo Schurtz
Se vai fazer bate-volta, o gasto é muito alto mesmo.

Se conseguir ficar em um local perto do projeto, ótimo. Mas tem que ver
quanto vai gastar.

Pensa em voltar de avião? Ônibus? Vai voltar todo fds?

Vai uma grana alta.


--
Eduardo Schurtz


2014-03-18 17:38 GMT-03:00 Jean Carlos Reddiga :

>
>
> Gente, muito obrigado pelo retorno.
>
> Sempre muito atenciosos.
>
> A engociações estão um pouco melhores, até por conta da transferencia.
> Não penso em levar a familia, e sim fazer bate e volta.
>
> Penso tambem em usar o tempo livre(a noite) pra cursar alguma coisa e até
> mesmo complementar renda com freelance.
>
> Mais uma vez, obrigado pessoal.
>
>
> Em 18 de março de 2014 17:29,  escreveu:
>
>
>>
>> Bem, já faz tempo que não tive mais ocasião de trabalhar como Analista de
>> Sistemas mas pelo que ouço falar dos amigos que trabalham nessa área aqui
>> em SP/Capital, para um Sênior que além de bastante tempo de estrada de modo
>> geral ainda possui Domínio completo das tools/técnicas/procedimentos de
>> Análise que a Empresa usa, é algo de R$ 7.000 a R$ 8.000 como CLT ou coisa
>> de uns R$ 60 a R$ 65/hora como PJ Isso PODE e VAI ter variações,
>> dependendo de fatores como Localização da Empresa, pacote de benefícios,
>> plano de carreira lá dentro, etc, etc, mas de modo geral espere alguma
>> coisa nessa faixa, mais ou menos...
>>
>>  []s
>>
>>Chiappa
>>
>>  OBS : ** lógico **, se a negociação evoluir positivamente, vc Não Pode
>> deixar de vir até aqui (ou no mínimo pesquisar com os profissionais
>> adequados, e/ou fazer um levantamento pela internet) dos teus Custos, como
>> moradia, educação, transporte... O custo de vida em geral aqui está bem
>> alto, e esses componentes que citei estão entre os que mais subiram
>> recentemente...
>>
>
>  
>


Re: [oracle_br] Re: Consulta ao Grupo - Off Topic

2014-03-18 Por tôpico Jean Carlos Reddiga
Gente, muito obrigado pelo retorno.

Sempre muito atenciosos.

A engociações estão um pouco melhores, até por conta da transferencia.
Não penso em levar a familia, e sim fazer bate e volta.

Penso tambem em usar o tempo livre(a noite) pra cursar alguma coisa e até
mesmo complementar renda com freelance.

Mais uma vez, obrigado pessoal.


Em 18 de março de 2014 17:29,  escreveu:

>
>
> Bem, já faz tempo que não tive mais ocasião de trabalhar como Analista de
> Sistemas mas pelo que ouço falar dos amigos que trabalham nessa área aqui
> em SP/Capital, para um Sênior que além de bastante tempo de estrada de modo
> geral ainda possui Domínio completo das tools/técnicas/procedimentos de
> Análise que a Empresa usa, é algo de R$ 7.000 a R$ 8.000 como CLT ou coisa
> de uns R$ 60 a R$ 65/hora como PJ Isso PODE e VAI ter variações,
> dependendo de fatores como Localização da Empresa, pacote de benefícios,
> plano de carreira lá dentro, etc, etc, mas de modo geral espere alguma
> coisa nessa faixa, mais ou menos...
>
>  []s
>
>Chiappa
>
>  OBS : ** lógico **, se a negociação evoluir positivamente, vc Não Pode
> deixar de vir até aqui (ou no mínimo pesquisar com os profissionais
> adequados, e/ou fazer um levantamento pela internet) dos teus Custos, como
> moradia, educação, transporte... O custo de vida em geral aqui está bem
> alto, e esses componentes que citei estão entre os que mais subiram
> recentemente...
>  
>


[oracle_br] Re: Consulta ao Grupo - Off Topic

2014-03-18 Por tôpico jlchiappa
Bem, já faz tempo que não tive mais ocasião de trabalhar como Analista de 
Sistemas mas pelo que ouço falar dos amigos que trabalham nessa área aqui em 
SP/Capital, para um Sênior que além de bastante tempo de estrada de modo geral 
ainda possui Domínio completo das tools/técnicas/procedimentos de Análise que a 
Empresa usa, é algo de R$ 7.000 a R$ 8.000 como CLT ou coisa de uns R$ 60 a R$ 
65/hora como PJ Isso PODE e VAI ter variações, dependendo de fatores como 
Localização da Empresa, pacote de benefícios, plano de carreira lá dentro, etc, 
etc, mas de modo geral espere alguma coisa nessa faixa, mais ou menos...

 []s
 
   Chiappa

 OBS : ** lógico **, se a negociação evoluir positivamente, vc Não Pode deixar 
de vir até aqui (ou no mínimo pesquisar com os profissionais adequados, e/ou 
fazer um levantamento pela internet) dos teus Custos, como moradia, educação, 
transporte... O custo de vida em geral aqui está bem alto, e esses componentes 
que citei estão entre os que mais subiram recentemente...

[oracle_br] Re: consulta sql em ambiente DW

2013-10-05 Por tôpico ederson2001br
Bom dia Orfeu,

Neste caso, o cenário ficou incompleto e para mostrá-lo todo, seria informação 
demais para postar.

Eu começaria buscando o que a "query está fazendo com banco", para em seguida 
identificar o plano de execução.

Para identificar, abra outra sessão na mesma instance enquanto a sua query 
esteja "rodando" e execute:

--executando.sql
set pagesize 100;
set linesize 160;
column sid format a6;
column serial format a6;
column processo format a60;
column inicio format a20;
column username format a20;
SELECT to_char(s.sid) sid,
   to_char(s.serial#) serial,
   s.username,
   substr(decode(target_desc, NULL, decode(target, NULL, opname, 
concat(opname, concat(' - ', target))), decode(target, NULL,
concat(opname, concat(' : ', target_desc)), concat(opname, concat(' : ',
concat(target_desc, concat(' - ', target)), 1, 55) "Processo",
   to_char(start_time, 'dd/mm/ hh24:mi:ss') "Inicio",
   totalwork tot_block,
   totalwork - sofar "A processar"
  FROM v$session_longops l,
   v$session s
 WHERE sofar < totalWork
   AND s.sid = l.sid;

Depois, pegue o plano de execução da sua query original com:

EXPLAIN PLAN FOR
--seu SQL -- 
SET LINESIZE 130
SET PAGESIZE 0
SELECT * FROM table(DBMS_XPLAN.DISPLAY);

Repita o EXPLAIN, mas retirando TODOS os hints e compare os dois.

É um começo ...


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

Labor improbus omnia vincit

--- Em oracle_br@yahoogrupos.com.br, orfeu lima  escreveu
>
> Boa tarde Srs. do grupo,
> Temos um ambiente de dw com as seguintes configurações.
> S. O - Red Hat 5.5
> Oracle 11.2.0.3
> Discos em ASM
> Estou tentando executar o select abaixo, mas não estou conseguindo. A 
> instrução está executando mas não termina.
> Gostaria de pedir sugestão aos membros do grupo para poder estar melhorando 
> essa instrução.
> Índices foram criados.
> Obrigado
> Segue abaixo a instrução sql.
> SELECT 
>  /*+ index_join(TBBENEFICIARIO IDXTPSEXO,IDXLOTE,IDXLOTE2) */
>  /*+ index_join(TBPROJETO 
> IDXPROJETO,IDXTP_PROJETO,IDX_PROJETO_COMPLEMENTA,IDXSUPER2,IDXPROJMUN) */
>  /*+ index_join(TBTIPOPROJETO IDXTPPROJETO) */
>  /*+ index_join(TBProjetoTipoFase IDXTPPROJ,IDXTPROJTPFASE) */
>  /*+ index_join(TBPROJETOCONSTITUICAO IDXTPROJTPFASE2) */
>  /*+ index_join(TBTIPOSEXO IDXTPSEXO2) */
>  /*+ index_join(TBLOTE IDXLOTE2) */
>  /*+ index_join(TBDAPGerada IDXGERADA2) */
>  /*+ index_join(TBSR IDXSUPER) */
>  /*+ index_join(TBUF IDXSUPERUF) */
>  /*+ index_join(TBUF IDXSUPERUF) */
>  /*+ index_join(TBMUNICIPIO IDXMUNICIPIO) */
>  /*+ index_join(TBCREDITO IDXTBCREDITO,IDXTPAGFIN2) */
>  /*+ index_join(TBTIPOCREDITO IDXTPTBCREDITO) */
>  /*+ index_join(TBAgenteFinanceiro IDXTPAGFIN) */
>  /*+ index_join(TBAssentamento IDXASSENTA,IDXASSENTA4) */
>  /*+ index_join(TBTipoSituacao IDXASSENTA3) */
>  BENEFICIARIO.BENEFICIARIO_IDENT_CODIGO CodigoBeneficiario,
>  BENEFICIARIO.BENEFICIARIO_IDENT_NOME NomeBeneficiario,
>  BENEFICIARIO.BENEFICIARIO_IDENT_PAI PaiBeneficiario,
>  BENEFICIARIO.BENEFICIARIO_IDENT_MAE MaeBeneficiario,
>  NACIONALIDADE.BENEFICIARIO_TPNAC_CODIGO CodigoNacionalidade,
>  NACIONALIDADE.BENEFICIARIO_TPNAC_DESC Nacionalidade,
>  ESTADOCIVIL.BENEFICIARIO_TPESTCIV_CODIGO CodigoEstadoCivil,
>  ESTADOCIVIL.BENEFICIARIO_TPESTCIV_DESC EstadoCivil,
>  BENEFICIARIO.BENEFICIARIO_IDENT_CPF CPF,
>  PROJETO.PROJETO_IDENT_CODIGO CodigoProjeto,
>  PROJETO.PROJETO_IDENT_NOME NomeProjeto,
>  BENEFICIARIO.BENEFICIARIO_IDENT_PROCADM NumeroProcesso,
>  LOTE.beneficiario_lote_numero NumeroLote,
>  SEXO.sexo_codigo CodigoSexo,
>  SEXO.sexo_descricao Sexo,
>  BENEFICIARIO.BENEFICIARIO_IDENT_DTNASC DataNascimento,
>  BENEFICIARIO.BENEFICIARIO_IDENT_DTATUALIZA DataAtualizacao,
>  SITUACAO.BENEFICIARIO_TIPOSIT_CODIGO CodigoSituacao,
>  SITUACAO.BENEFICIARIO_TIPOSIT_DESC Situacao,
>  ASSENTAMENTO.BENEFICIARIO_ASSENT_SIT_DATA DataSituacao,
>  BENEFICIARIO.BENEFICIARIO_IDENT_DTHOMOLOG DataAssentado,
>  CASE WHEN DAP_GERADA.Cod_DAP IS NOT NULL THEN 'SIM' ELSE 'NÃO' END PossuiDAP,
>  DAP_GERADA.Cod_DAP CodigoDAP,
>  DAP_GERADA.ID_dap_gerada DAPGerada,
>  DAP_GERADA.DAP_grupo DAPGrupo,
>  DAP_GERADA.DAP_modelo DAPModelo,
>  SR.sr_codigo CodigoSR,
>  SR.sr_nome NomeSR,
>  UF.COUF CodigoUF,
>  UF.NOUF NomeUF,
>  MUNICIPIO.COMUNIBGE CodigoIBGE,
>  MUNICIPIO.NOMUN Municipio,
>  PROJETOCOMPLEMENTO.Area Area,
>  PROJETOCOMPLEMENTO.Capacidade Capacidade,
>  PROJETOTIPOFASE.projeto_tipofase_codigo CodigoFase,
>  PROJETOTIPOFASE.projeto_tipofase_descricao Fase,
>  TIPOPROJETO.projeto_tipoprojeto_codigo CodigoTipoProjeto,
>  TIPOPROJETO.projeto_tipoprojeto_descricao TipoProjeto,
>  PROJETOCOMPLEMENTO.DataCriacao DataCriacao,
>  CREDITO.crd_id CodigoCredito,
>  TIPOCREDITO.tpc_codigo CodigoTipoCredito,
>  tiPOCREDITO.tpc_descricao TipoCredito,
>  CASE WHEN crd_complementacao  = '0' THEN CREDITO.crd_valor ELSE 0 END 
> ValorCredito,
>  CREDITO.crd_data_recebimento DataCredito,
>  CASE WHEN cr

[oracle_br] Re: consulta sql em ambiente DW

2013-10-04 Por tôpico J. Laurindo Chiappa
  Bom, esse "não termina" certamente quer dizer que o SQL está demorando muito, 
né não ? Sendo isso, Sorry, colega, mas se vc acha que alguém é capaz de olhar 
para esse monstrengo fazendo JOIN de MAIS DE UMA DÚZIA DE TABELAS e ,sem 
informações, sem saber a DISTRIBUIÇÃO/VOLUME/CARDINALIDADE DOS DADOS, ser capaz 
de dizer algo, vc tá esperando um pouquinho demais
  Meu conselho : 
  
  a. levante EXATAMENTE o Volume e a Cardinalidade/Distribuição dos dados 
(principalmente nas colunas sendo usadas para filtro)
  
  b. levante as condições FÍSICAS das tabelas, em especial as características 
que podem ser usadas para "pular" parte do acesso aos dados (tais como ìndices 
existentes e seus tipos, PARTICIONAMENTO, PKs, FKs, Domínio dos dados, etc)
  
  c. levante como estão as Estatísticas das tabelas, principalmente quanto aos 
HISTOGRAMAS nas colunas que vc sabe/descobriu que possuem distribuição de dados 
irregular
  
  d. retire da query temporariamente as tabelas/colunas de pequena monta que 
trazem informação cadastral e/ou tem pequeno volume de dados (como Municipio e 
UF, provavelmente), mas não só elas - só VOCÊ sabe quais 
  
  ==> feito isso, vc vai capturar um Plano de Execução real e completo 
(INCLUSIVE com A_ROWS e E-ROWS, condiçoes de filtro, tudinho) , que daí vc 
poderá COMPARAR a quantidade de linhas de cada passo do plano com o que vc 
levantou acima... Isso CERTAMENTE vai te dar algum insight... 
  
   E é claro, num ambiente DW é Extremamente Comum que vc veja full table 
scans, pois vc via de regra PRECISA recuperar um montão de linhas, lendo 
segmentos inteiros, e o FTS é ESPECIALMENTE eficiente nisso, yep ??? Considere 
a possibilidade de TIRAR esses HINTs "forçando" uso de índices...
 E outra : nesses casos é simplesmente CRÍTICO, e pode ser a diferença entre 
SUCESSO e FALHA, a organização física, ie, vc ter tabelas particionadas aonde 
haja partições que possam ser puladas, views materializadas que TRAGAM 
resultados pré-computados, é por aí
   
[]s
 
  Chiappa

--- Em oracle_br@yahoogrupos.com.br, orfeu lima  escreveu
>
> Boa tarde Srs. do grupo,
> Temos um ambiente de dw com as seguintes configurações.
> S. O - Red Hat 5.5
> Oracle 11.2.0.3
> Discos em ASM
> Estou tentando executar o select abaixo, mas não estou conseguindo. A 
> instrução está executando mas não termina.
> Gostaria de pedir sugestão aos membros do grupo para poder estar melhorando 
> essa instrução.
> Índices foram criados.
> Obrigado
> Segue abaixo a instrução sql.
> SELECT 
>  /*+ index_join(TBBENEFICIARIO IDXTPSEXO,IDXLOTE,IDXLOTE2) */
>  /*+ index_join(TBPROJETO 
> IDXPROJETO,IDXTP_PROJETO,IDX_PROJETO_COMPLEMENTA,IDXSUPER2,IDXPROJMUN) */
>  /*+ index_join(TBTIPOPROJETO IDXTPPROJETO) */
>  /*+ index_join(TBProjetoTipoFase IDXTPPROJ,IDXTPROJTPFASE) */
>  /*+ index_join(TBPROJETOCONSTITUICAO IDXTPROJTPFASE2) */
>  /*+ index_join(TBTIPOSEXO IDXTPSEXO2) */
>  /*+ index_join(TBLOTE IDXLOTE2) */
>  /*+ index_join(TBDAPGerada IDXGERADA2) */
>  /*+ index_join(TBSR IDXSUPER) */
>  /*+ index_join(TBUF IDXSUPERUF) */
>  /*+ index_join(TBUF IDXSUPERUF) */
>  /*+ index_join(TBMUNICIPIO IDXMUNICIPIO) */
>  /*+ index_join(TBCREDITO IDXTBCREDITO,IDXTPAGFIN2) */
>  /*+ index_join(TBTIPOCREDITO IDXTPTBCREDITO) */
>  /*+ index_join(TBAgenteFinanceiro IDXTPAGFIN) */
>  /*+ index_join(TBAssentamento IDXASSENTA,IDXASSENTA4) */
>  /*+ index_join(TBTipoSituacao IDXASSENTA3) */
>  BENEFICIARIO.BENEFICIARIO_IDENT_CODIGO CodigoBeneficiario,
>  BENEFICIARIO.BENEFICIARIO_IDENT_NOME NomeBeneficiario,
>  BENEFICIARIO.BENEFICIARIO_IDENT_PAI PaiBeneficiario,
>  BENEFICIARIO.BENEFICIARIO_IDENT_MAE MaeBeneficiario,
>  NACIONALIDADE.BENEFICIARIO_TPNAC_CODIGO CodigoNacionalidade,
>  NACIONALIDADE.BENEFICIARIO_TPNAC_DESC Nacionalidade,
>  ESTADOCIVIL.BENEFICIARIO_TPESTCIV_CODIGO CodigoEstadoCivil,
>  ESTADOCIVIL.BENEFICIARIO_TPESTCIV_DESC EstadoCivil,
>  BENEFICIARIO.BENEFICIARIO_IDENT_CPF CPF,
>  PROJETO.PROJETO_IDENT_CODIGO CodigoProjeto,
>  PROJETO.PROJETO_IDENT_NOME NomeProjeto,
>  BENEFICIARIO.BENEFICIARIO_IDENT_PROCADM NumeroProcesso,
>  LOTE.beneficiario_lote_numero NumeroLote,
>  SEXO.sexo_codigo CodigoSexo,
>  SEXO.sexo_descricao Sexo,
>  BENEFICIARIO.BENEFICIARIO_IDENT_DTNASC DataNascimento,
>  BENEFICIARIO.BENEFICIARIO_IDENT_DTATUALIZA DataAtualizacao,
>  SITUACAO.BENEFICIARIO_TIPOSIT_CODIGO CodigoSituacao,
>  SITUACAO.BENEFICIARIO_TIPOSIT_DESC Situacao,
>  ASSENTAMENTO.BENEFICIARIO_ASSENT_SIT_DATA DataSituacao,
>  BENEFICIARIO.BENEFICIARIO_IDENT_DTHOMOLOG DataAssentado,
>  CASE WHEN DAP_GERADA.Cod_DAP IS NOT NULL THEN 'SIM' ELSE 'NÃO' END PossuiDAP,
>  DAP_GERADA.Cod_DAP CodigoDAP,
>  DAP_GERADA.ID_dap_gerada DAPGerada,
>  DAP_GERADA.DAP_grupo DAPGrupo,
>  DAP_GERADA.DAP_modelo DAPModelo,
>  SR.sr_codigo CodigoSR,
>  SR.sr_nome NomeSR,
>  UF.COUF CodigoUF,
>  UF.NOUF NomeUF,
>  MUNICIPIO.COMUNIBGE CodigoIBGE,
>  MUNICIPIO.NOMUN Municipio,
>  PROJETOCOMPLEMENTO.Area Area,
>  PROJETOCOMPLEMENTO.Capacidade Capacidade,

RES: [oracle_br] Re: consulta select

2012-06-20 Por tôpico Márcio - Grupos Oracle
Resolvido com o partition by.

 

Obrigado chiappa.

 

De: oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br] Em
nome de J. Laurindo Chiappa
Enviada em: Wednesday, 20 de June de 2012 14:36
Para: oracle_br@yahoogrupos.com.br
Assunto: [oracle_br] Re: consulta select

 

  

Neste momento não tenho o tempo pra te montar um exemplo completo, mas pelo
que entendi o que vc quer é uma soma Particionada dos valores de ICMS, mas
no caso particionando por nota fiscal :
http://askanantha.blogspot.com.br/2007/10/running-total-or-cumulative-sum-us
ing.html e
http://asktom.oracle.com/pls/asktom/f?p=100:11:0P11_QUESTION_ID:17937641
00346222947 são exemplos, e veja que em ambos além do OVER foi indicado um
PARTITION, acho que é isso q tá faltando

[]s

Chiappa

--- Em oracle_br@yahoogrupos.com.br <mailto:oracle_br%40yahoogrupos.com.br>
, Márcio - Grupos Oracle  escreveu
>
> Boas.
> 
> 
> 
> Depois de tanto tempo sem desenvolver, enferrujei total.
> 
> 
> 
> Preciso de ajuda numa consulta, é o seguinte, tenho as informações e tenho
> um campo que tem o valor total da nota, e tenho outro campo que tem o ICMS
> para cada item da nota. Eu preciso somar o valor do ICMS e descontar do
> total da nota. Para uma nota funciona, mas quando coloco para todas o
select
> fica doidão.
> 
> 
> 
> Estou tentando utilizar o OVER, mas não estão agrupando por nada e está
> dando erro.
> 
> 
> 
> SELECT dbnp.db_notap_nro AS NOTA,
> 
> round(DBNF.DB_NOTA_VLR_PROD,2) +
> sum(round(dbnp.db_notap_vlr_icms,2)) OVER(ORDER BY dbnp.db_notap_nro)
> "Valor Sem Tributação", 
> 
> round(DBNF.DB_NOTA_VLR_PROD,2) AS "Valor Total Nota",
> 
> dbnf.db_nota_cond_pgto AS "Pagamento",
> 
> dbnf.db_nota_operacao AS "Natureza Operação",
> 
> DBNF.DB_NOTA_DT_EMISSAO,
> 
> dbc.db_cli_nome AS "Cliente",
> 
> dbc.db_cli_cidade AS "Cidade",
> 
> dbc.db_cli_situacao AS "Situaçao",
> 
> dbc.db_cli_lpreco AS "Lista de Preço",
> 
> dbc.db_cli_regiao AS "Micro Região",
> 
> dbp.db_prod_descricao AS "Produto",
> 
> dbtr.db_tbrep_nome AS "Representante",
> 
> dbtrs.db_tbrep_nome AS "Superior",
> 
> dbtf.db_tbfam_descricao AS "Categoria do Produto",
> 
> dbtra.db_tbatv_descricao AS "Ramo Atividade",
> 
> case when dbto.db_tbops_fat = 'S' then 'Venda'
> 
> when dbto.db_tbops_fat = 'B' then 'Bonificação'
> 
> when dbto.db_tbops_fat = 'D' then 'Devolução'
> 
> when dbto.db_tbops_fat = 'N' then 'Outras Saídas'
> 
> else 'Transferência'
> 
> end AS "Tipo Nota"
> 
> FROM xxx.DB_NOTA_PROD DBNP, xx.db_nota_fiscal dbnf, xx.db_cliente dbc,
> xx.db_produto dbp,
> 
> xx.db_tb_repres dbtr, xx.db_tb_repres dbtrs, xx.db_tb_familia dbtf,
> 
> xx.db_tb_ramo_ativ dbtra, xx.db_tb_opers dbto
> 
> WHERE dbnp.db_notap_empresa = '016'
> 
> AND DBNP.DB_NOTAP_EMPRESA = dbnf.db_nota_empresa
> 
> AND DBNP.DB_NOTAP_NRO = DBNF.db_nota_nro
> 
> AND DBNP.DB_NOTAP_SERIE = DBNF.DB_NOTA_SERIE
> 
> AND DBC.DB_CLI_CODIGO = DBNF.DB_NOTA_CLIENTE
> 
> AND DBNP.DB_NOTAP_PRODUTO = DBP.DB_PROD_CODIGO
> 
> AND DBNF.DB_NOTA_REPRES = DBTR.DB_TBREP_CODIGO
> 
> AND dbtr.db_tbrep_superior = dbtrs.db_tbrep_codigo
> 
> AND DBP.DB_PROD_FAMILIA = DBTF.DB_TBFAM_CODIGO
> 
> AND DBNF.DB_NOTA_OPERACAO = DBTO.DB_TBOPS_COD
> 
> and dbc.db_cli_ramativ = dbtra.db_tbatv_codigo
> 
> AND DBNF.DB_NOTA_DT_EMISSAO BETWEEN '02-JAN-2012' AND '02-JAN-2012'
> 
> --AND DBNP.DB_NOTAP_NRO = 11727
> 
> --AND DBNP.DB_NOTAP_SERIE = 'D00'
> 
> /*group by dbnp.db_notap_nro,
> 
> DBNF.DB_NOTA_VLR_PROD,
> 
> dbnf.db_nota_cond_pgto,
> 
> dbnf.db_nota_operacao,
> 
> DBNF.DB_NOTA_DT_EMISSAO,
> 
> dbc.db_cli_nome,
> 
> dbc.db_cli_cidade,
> 
> dbc.db_cli_situacao,
> 
> dbc.db_cli_lpreco,
> 
> dbc.db_cli_regiao,
> 
> dbp.db_prod_descricao,
> 
> dbtr.db_tbrep_nome,
> 
> dbtrs.db_tbrep_nome,
> 
> dbtf.db_tbfam_descricao,
> 
> dbtra.db_tbatv_descricao,
> 
> dbto.db_tbops_fat*/
> 
> 
> 
> [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: consulta select

2012-06-20 Por tôpico J. Laurindo Chiappa
  Neste momento não tenho o tempo pra te montar um exemplo completo, mas pelo 
que entendi o que vc quer é uma soma Particionada dos valores de ICMS, mas no 
caso particionando por nota fiscal : 
http://askanantha.blogspot.com.br/2007/10/running-total-or-cumulative-sum-using.html
 e 
http://asktom.oracle.com/pls/asktom/f?p=100:11:0P11_QUESTION_ID:1793764100346222947
 são exemplos, e veja que em ambos além do OVER foi indicado um PARTITION, acho 
que é isso q tá faltando

 []s

   Chiappa

--- Em oracle_br@yahoogrupos.com.br, Márcio - Grupos Oracle  
escreveu
>
> Boas.
> 
>  
> 
> Depois de tanto tempo sem desenvolver, enferrujei total.
> 
>  
> 
> Preciso de ajuda numa consulta, é o seguinte, tenho as informações e tenho
> um campo que tem o valor total da nota, e tenho outro campo que tem o ICMS
> para cada item da nota. Eu preciso somar o valor do ICMS e descontar do
> total da nota. Para uma nota funciona, mas quando coloco para todas o select
> fica doidão.
> 
>  
> 
> Estou tentando utilizar o OVER,  mas não estão agrupando por nada e está
> dando erro.
> 
>  
> 
> SELECT dbnp.db_notap_nro AS NOTA,
> 
>round(DBNF.DB_NOTA_VLR_PROD,2)  +
> sum(round(dbnp.db_notap_vlr_icms,2))  OVER(ORDER BY dbnp.db_notap_nro)
> "Valor Sem Tributação",
> 
>round(DBNF.DB_NOTA_VLR_PROD,2)  AS "Valor Total Nota",
> 
>dbnf.db_nota_cond_pgto AS "Pagamento",
> 
>dbnf.db_nota_operacao AS "Natureza Operação",
> 
>DBNF.DB_NOTA_DT_EMISSAO,
> 
>dbc.db_cli_nome AS "Cliente",
> 
>dbc.db_cli_cidade AS "Cidade",
> 
>dbc.db_cli_situacao AS "Situaçao",
> 
>dbc.db_cli_lpreco AS "Lista de Preço",
> 
>dbc.db_cli_regiao AS "Micro Região",
> 
>dbp.db_prod_descricao AS "Produto",
> 
>dbtr.db_tbrep_nome AS "Representante",
> 
>dbtrs.db_tbrep_nome AS "Superior",
> 
>dbtf.db_tbfam_descricao AS "Categoria do Produto",
> 
>dbtra.db_tbatv_descricao AS "Ramo Atividade",
> 
>case when dbto.db_tbops_fat = 'S' then 'Venda'
> 
> when dbto.db_tbops_fat = 'B' then 'Bonificação'
> 
> when dbto.db_tbops_fat = 'D' then 'Devolução'
> 
> when dbto.db_tbops_fat = 'N' then 'Outras Saídas'
> 
> else 'Transferência'
> 
>end  AS "Tipo Nota"
> 
>   FROM xxx.DB_NOTA_PROD DBNP, xx.db_nota_fiscal dbnf, xx.db_cliente dbc,
> xx.db_produto dbp,
> 
>xx.db_tb_repres dbtr, xx.db_tb_repres dbtrs, xx.db_tb_familia dbtf,
> 
>xx.db_tb_ramo_ativ dbtra, xx.db_tb_opers dbto
> 
> WHERE dbnp.db_notap_empresa = '016'
> 
>AND DBNP.DB_NOTAP_EMPRESA = dbnf.db_nota_empresa
> 
>AND DBNP.DB_NOTAP_NRO = DBNF.db_nota_nro
> 
>AND DBNP.DB_NOTAP_SERIE = DBNF.DB_NOTA_SERIE
> 
>AND DBC.DB_CLI_CODIGO = DBNF.DB_NOTA_CLIENTE
> 
>AND DBNP.DB_NOTAP_PRODUTO = DBP.DB_PROD_CODIGO
> 
>AND DBNF.DB_NOTA_REPRES = DBTR.DB_TBREP_CODIGO
> 
>AND dbtr.db_tbrep_superior = dbtrs.db_tbrep_codigo
> 
>AND DBP.DB_PROD_FAMILIA = DBTF.DB_TBFAM_CODIGO
> 
>AND DBNF.DB_NOTA_OPERACAO = DBTO.DB_TBOPS_COD
> 
>and dbc.db_cli_ramativ = dbtra.db_tbatv_codigo
> 
>AND DBNF.DB_NOTA_DT_EMISSAO BETWEEN '02-JAN-2012' AND '02-JAN-2012'
> 
>--AND DBNP.DB_NOTAP_NRO = 11727
> 
>--AND DBNP.DB_NOTAP_SERIE = 'D00'
> 
> /*group by dbnp.db_notap_nro,
> 
>DBNF.DB_NOTA_VLR_PROD,
> 
>dbnf.db_nota_cond_pgto,
> 
>dbnf.db_nota_operacao,
> 
>DBNF.DB_NOTA_DT_EMISSAO,
> 
>dbc.db_cli_nome,
> 
>dbc.db_cli_cidade,
> 
>dbc.db_cli_situacao,
> 
>dbc.db_cli_lpreco,
> 
>dbc.db_cli_regiao,
> 
>dbp.db_prod_descricao,
> 
>dbtr.db_tbrep_nome,
> 
>dbtrs.db_tbrep_nome,
> 
>dbtf.db_tbfam_descricao,
> 
>dbtra.db_tbatv_descricao,
> 
>dbto.db_tbops_fat*/
> 
> 
> 
> [As partes desta mensagem que não continham texto foram removidas]
>




[oracle_br] Re: Consulta com valor nulo

2012-02-10 Por tôpico José Laurindo

  Se foi exatamente isso que te falaram, quem te falou errou e longe... Até há 
situações aonde o mesmo caracter que o Oracle usa pra fim de string, que é o 
CHR(0) - imagino que é esse o tal 'char hexa" que vc cita - é usado também pela 
linguagem de programação para representar strings vazias ou nulos (a linguagem 
C é um caso) , mas isso é situação anômala, na linguagem SQL sendo executada 
pelo RDBMS numa versão não-pré-histórica o exemplo ao final desta resposta vai 
mostrar que isso não é o caso...

  Pra vc poder entender a questão apropriadamente e a resposta (e não sair 
fazendo POG de "juntar caracter hexa") vc precisa saber que :

 a) no RDBMS Oracle chaves completamente nulas NÃO ENTRAM no índice b*tree 
comum , isso é Por Definição 

 b) o RDBMS Oracle é um dos poucos que seguem a ferro e fogo a determinação 
existente na origem da teoria de bancos relacional, que exige que vc TENHA um 
datatype que indique valor inexistente/inapropriado/não disponível , esse é o 
NULL : ainda faz parte da exigência que ele seja Absolutamente diferente de 
qquer outro datatype, E que haja um operador específico para ele ... O Oracle 
segue à risca isso, então uma coluna NULL *** não *** é igual a nada, *** NÂO 
*** é diferente de nada , não é maior nem menor que nada  É a lógica 
tri-valorada, uma operação/comparação qquer pode ser verdadeira, Falsa ou 
NULA...
  E além disso o ÚNICO método garantido e Autorizado para vc comparar se um 
conteúdo é nulo é o OPERADOR correspondente, o IS NULL...

 c) o índice b*tree armazena o Exato Valor da coluna indexada, então se vc 
aplicar QUALQUER função/operador na cláusula WHERE para a coluna indexada, via 
de regra o índice Não Poderá ser usado

 
 ==> Esses pontos são *** claramente *** Documentados nos manuais Oracle de 
Concepts e nos Reference, e os mais diversos bons sites de referência falam o 
mesmo : http://www.oratechinfo.co.uk/nulls.html , 
http://asktom.oracle.com/pls/asktom/f?p=100:11:0P11_QUESTION_ID:5984520277372
 e 
http://asktom.oracle.com/pls/asktom/f?p=100:11:0P11_QUESTION_ID:1274000564279#10699788945720
 são exemplos ...

 Então sim, é verdade que se vc tiver a estranha necessidade de consultar via 
índice uma coluna NULLABLE (estranha porque normalmente colunas indexadas são 
CHAVES, e por princípio CHAVES não deveriam ser NULLABLE) , vc não poderá usar 
um índice b*tree : isso  NEM se usar no WHERE um comparação tipo coluna = '' ou 
coluna = CHR(0) - pois repetindo acima, string vazia NÂO é igual a NULL, NULL 
Não É igual a nada - , E NEM se vc aplicar um operador/função que trate NULOS, 
pois (como para Qualquer função/operador que modifique a coluna) aí o índice 
deixa de ser usado ...

 O correto e Recomendado é se ter um índice de função que indexe apenas os 
valores nulos Exemplo (usando bd 10gR2, e a tabela de demonstração EMP no 
schema SCOTT) :

SQL> insert into EMP (EMPNO, ENAME, JOB, SAL) values(, null, 'VAGAL', 0);

SQL> commit;

SQL> CREATE INDEX IDX_ENAME ON EMP(ENAME);

SQL> SET AUTOTRACE ON

==> primeiro, veja que o índice está em uso se eu informar uma chave, MAS os 
eventuais registros com a coluna NULL, óbvio, não são trazidos (item b) acima, 
NULL não é igual a nada...) :

SQL> select empno, ename, job, sal from emp where ename = 'FORD';

 EMPNO ENAME  JOB  SAL
-- -- - --
  7902 FORD   ANALYST 3000


Plano de ExecuþÒo
--
Plan hash value: 898688482

-
| Id  | Operation   | Name  | Rows  | Bytes | Cost (%CPU)| 
Time |
-
|   0 | SELECT STATEMENT|   | 1 |39 | 2   (0)| 
00:00:01 |
|   1 |  TABLE ACCESS BY INDEX ROWID| EMP   | 1 |39 | 2   (0)| 
00:00:01 |
|*  2 |   INDEX RANGE SCAN  | IDX_ENAME | 1 |   | 1   (0)| 
00:00:01 |
-

Predicate Information (identified by operation id):
---

   2 - access("ENAME"='FORD')

Note
-
   - dynamic sampling used for this statement

==> agora vamos trazer os NULLs além dos regs que obedecerem ao valor 
informado, o que (imagino) é o seu "problema" : vc verá que ao usar uma função 
(a de transformação de NULOS, no caso) o índice deixa de ser usado (item c) :...

SQL> select empno, ename, job, sal from emp where nvl(ename, 'FORD') = 'FORD';

 EMPNO ENAME  JOB  SAL
-- -- - --
  7902 FORD   ANALYST 3000
  VAGAL  0


Plano de ExecuþÒo
--
Plan hash value: 3956160932

-

[oracle_br] Re: Consulta Múltipla SQL no ORACLE

2011-06-16 Por tôpico fabio_edp
Ricardo, obrigado... era exatamente isso, ficou como eu queria.
Você usou OVER PARTITION... vou procurar na net mais detalhes depois. Poderia 
me explicar de maneira resumida a função dessa clausula?

Obrigado novamente...

Fábio.

--- Em oracle_br@yahoogrupos.com.br, Ricardo Tajiri  escreveu
>
> Oi Fabio,
> 
> Tente com SQL analítico, desta forma:
> 
> select i.ID_CONSUMIDOR, c.NOME, i.MES_ANO, i.ID_SERVICO, s.DESCRICAO,
> i.VALOR,
>SUM(i.valor) OVER (PARTITION BY i.ID_CONSUMIDOR) as Valor_Total
> from
>   CONSUMIDOR c left join ITENS_FATURA i on
> c.ID_CONSUMIDOR = i.ID_CONSUMIDOR
>   left join SERVICO s on
> i.ID_SERVICO = s.ID_SERVICO
> where i.MES_ANO = '2011-06-01'
> group by i.ID_CONSUMIDOR, c.NOME, i.mes_ano, i.id_servico, s.descricao,
> i.valor
> 
> Seguindo esta idéia, voce deve obter o resultado esperado...
> 
> Abraços,
> Ricardo Hideyuki Tajiri
> LaRCom - FEEC - UNICAMP
> 
> 
> Em 16 de junho de 2011 12:01, fabio_edp  escreveu:
> 
> > select i.ID_CONSUMIDOR, c.NOME, i.MES_ANO, i.ID_SERVICO, s.DESCRICAO,
> > i.VALOR,
> > (select sum(i.valor) from ITENS_FATURA i where i.id_servico in
> > (select i.ID_SERVICO from ITENS_FATURA i) and i.MES_ANO = '2011-06-01' and
> > i.ID_CONSUMIDOR in ())
> > as Valor_Total
> > from
> > CONSUMIDOR c left join ITENS_FATURA i on
> > c.ID_CONSUMIDOR = i.ID_CONSUMIDOR
> > left join SERVICO s on
> > i.ID_SERVICO = s.ID_SERVICO
> >
> > where i.ID_CONSUMIDOR in ()
> > and i.MES_ANO = '2011-06-01'
> > group by i.ID_CONSUMIDOR, c.NOME, i.mes_ano, i.id_servico, s.descricao,
> > i.valor
> >
> 
> 
> [As partes desta mensagem que não continham texto foram removidas]
>




Re: [oracle_br] Re: Consulta Múltipla SQL no ORACLE

2011-06-16 Por tôpico Ricardo Tajiri
Oi Fabio,

Tente com SQL analítico, desta forma:

select i.ID_CONSUMIDOR, c.NOME, i.MES_ANO, i.ID_SERVICO, s.DESCRICAO,
i.VALOR,
   SUM(i.valor) OVER (PARTITION BY i.ID_CONSUMIDOR) as Valor_Total
from
  CONSUMIDOR c left join ITENS_FATURA i on
c.ID_CONSUMIDOR = i.ID_CONSUMIDOR
  left join SERVICO s on
i.ID_SERVICO = s.ID_SERVICO
where i.MES_ANO = '2011-06-01'
group by i.ID_CONSUMIDOR, c.NOME, i.mes_ano, i.id_servico, s.descricao,
i.valor

Seguindo esta idéia, voce deve obter o resultado esperado...

Abraços,
Ricardo Hideyuki Tajiri
LaRCom - FEEC - UNICAMP


Em 16 de junho de 2011 12:01, fabio_edp  escreveu:

> select i.ID_CONSUMIDOR, c.NOME, i.MES_ANO, i.ID_SERVICO, s.DESCRICAO,
> i.VALOR,
> (select sum(i.valor) from ITENS_FATURA i where i.id_servico in
> (select i.ID_SERVICO from ITENS_FATURA i) and i.MES_ANO = '2011-06-01' and
> i.ID_CONSUMIDOR in ())
> as Valor_Total
> from
> CONSUMIDOR c left join ITENS_FATURA i on
> c.ID_CONSUMIDOR = i.ID_CONSUMIDOR
> left join SERVICO s on
> i.ID_SERVICO = s.ID_SERVICO
>
> where i.ID_CONSUMIDOR in ()
> and i.MES_ANO = '2011-06-01'
> group by i.ID_CONSUMIDOR, c.NOME, i.mes_ano, i.id_servico, s.descricao,
> i.valor
>


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



[oracle_br] Re: Consulta Múltipla SQL no ORACLE

2011-06-16 Por tôpico fabio_edp
Bom dia Marcos, obrigado por responder. Bom, vou tentar explicar de uma outra 
maneira:
Estou esperando um layout de importação que uma empresa irá disponibilizar, 
ainda não sei como será, aliás, nem ela sabe. Eu quero ganhar tempo pra quando 
sair o layout eu já saber como proceder. 

Preciso passar cada item (tabela ITENS_FATURA) que compõe a fatura dele 
separado, com seus valores, ordenados por consumidor, penso eu!

Eu tenho dados em mais de uma tabela e preciso ordená-los para que eu possa 
trabalhar e jogar no TXT.
Preciso saber O QUE fazer no SQL e O QUE fazer em programação C#...

TABELAS (só os campos que irei precisar)

TABELA: CONSUMIDOR
id_consumidor - number - (chave)
nome  - varchar
RG- varchar
CPF   - varchar
...

TABELA: ITENS_FATURA
id_consumidor  - number - (chave)
id_item_fatura - number
mes_ano- data('-mm-dd')
id_servico - number - (chave estrangeira)
valor  - number(18,2)
...

TABELA: FATURA
id_consumidor  - number - (chave)
mes_ano- data('-mm-dd')
valor_original - number(18,2)
valor_total- number (18,2)
...

TABELA: SERVICO
id_servico  - number - (chave)
descricao   - varchar
...
--
Mudei meu código SQL anterior e ficou assim (não se assustem): 
->
select i.ID_CONSUMIDOR, c.NOME, i.MES_ANO, i.ID_SERVICO, s.DESCRICAO, i.VALOR,
   (select sum(i.valor) from ITENS_FATURA i where i.id_servico in
   (select i.ID_SERVICO from ITENS_FATURA i) and 
i.MES_ANO = '2011-06-01' and i.ID_CONSUMIDOR in ())
as Valor_Total
from
CONSUMIDOR c left join ITENS_FATURA i on
c.ID_CONSUMIDOR = i.ID_CONSUMIDOR
left join SERVICO s on
i.ID_SERVICO = s.ID_SERVICO

where i.ID_CONSUMIDOR in ()
and i.MES_ANO = '2011-06-01'
group by i.ID_CONSUMIDOR, c.NOME, i.mes_ano, i.id_servico, s.descricao, i.valor
<-

O resultado aparece conforme exemplo abaixo (simplificado):

Id  nome_consumidor data id_serv desc_servico   valor   total
111 CONSUMIDOR_111  2011-06  1   TARIFA ÁGUA16.82   31.03
111 CONSUMIDOR_111  2011-06  2   TARIFA ESGOTO  13.46   31.03
111 CONSUMIDOR_111  2011-06  5   MULTA  0.7531.03

Está certo, parece que atende ao que preciso...

Mas... como eu faço um comando SQL pra somar todos os códigos Id_servico 
diferentes, ou, especificar QUAIS somar, de CADA consumidor de um determinado 
mês, gerando assim a fatura final?

Do jeito que eu coloquei, vai dar erro se eu tirar o consumidor , porque 
vai somar de todos e vai ficar repetindo o campo total igual pra todo mundo...

Esse código eu vou inserir em tempo de execução num sistema de exportação em 
C#, onde o usuário vai inserir o mês para exportar, por exemplo, mês de junho, 
e sai essa relação. Sem o total está ok, até ai tudo bem.

Qual a melhor maneira, jogo essa consulta acima numa tabela, depois faço outra, 
enfim... é isso que tá pegando. Quero comparar se os servicos somados batem com 
o campo FATURA.VALOR_TOTAL, visto que o sistema precisa exportar CADA 
lançamento individual e depois vai pedir a soma da fatura sem os impostos 
(código 5 e 6).

Seria uma outra tabela assim, conforme abaixo?

consumidor  mes valor_total_da_fatura(servicos_somados)
1   06/11   100.00
2   06/11   20.00
...
...

Experts em SQL, ajudem um novato curioso, por favor... ;)

Muito obrigado,

Fábio.


--- Em oracle_br@yahoogrupos.com.br, Marcos de Moura Gonçalves  
escreveu
>
> Bom dia Fábio!
> 
> Cara, primeira coisa estranha no seu SELECT é que vc coloca F.VALOR dentro
> da função de grupo SUM() e depois coloca ela também no GROUP BY... Vc quer
> somar os valores (SUM) ou vc quer uma linha por valor no resultado do seu
> SELECT (GROUP BY)?
> 
> Outro detalhe que não entendi é que vc diz que quer os resultados por
> FATURA, mas não tem a tabela FATURA no seu SELECT. Porque?
> 
> Pelo que eu entendi, valor_id_5 (na sua tabela de destino) seria a coluna
> SOMA do seu SELECT para ID_SERVICO = 5, é isso? Se for, qual a diferença
> entre valor_id_5 e valor_total_5? No resultado que vc mandou como exemplo
> existe ID_SERVICO = 1 e 2... Eles serão desprezados?
> 
> Pra ajudar, seria interessante mandar um DESC das tabelas CONSUMIDOR, FATURA
> e ITENS_FATURA.
> 
> Att.
> 
> Marcos
> 
> 
> Em 15 de junho de 2011 10:41, fabio_edp  escreveu:
> 
> >
> >
> > Bom dia a todos, estou aqui quebrando a cabeça para criar um sistema de
> > exportação de dados. Vou explicar o meu cenário:
> > Tenho um banco de dados ORACLE, onde tenho um sistema de controle que
> > gerencia faturas dos consumidores. Cada fatura está armazenada numa tabela
> > chama FATURA. Os itens que compõe essa fatura estão na tabela ITENS_FATURA.
> > A fatura é montada de acordo com os itens armazenados na ITENS_FATURA, como,
> > por exemplo, multas, juros, segunda via etc...
> >
> > Eu fiz a consulta abaixo:
> >
> > select f.ID_CONSUMIDOR, c.NOME, f.ID_SERVICO, sum(

RES: [oracle_br] Re: Consulta SCPC via forms6i

2009-10-20 Por tôpico jlchiappa
Tranqs, a minha última recomendação por enquanto então seria : já que tanto o 
UTL_TCP quanto o http são opções NO BANCO (e inclusive por isso imagino que se 
vc vai optar pela tcp o seu SERVIDOR DE BANCO tem acesso à web pelo account que 
roda os binários Oracle) , eu diria pra vc perguntar pro teu fornecedor se 
Realmente não tem uma interfacezinha http disponível lá na rotina dele, se 
tiver (imho, via de regra, ymmv, etc & tal) a utl_http deve ser mais fácil de 
usar...

 []s

 Chiappa

--- Em oracle_br@yahoogrupos.com.br, "Mauricio Roberto Maciel" 
 escreveu
>
> Chiappa, Marcos e demais:
> 
>  
> 
> Obrigado pelo retorno.
> 
>  
> 
> Acho que a UTL_TCP vai resolver o problema.
> 
>  
> 
> Qualquer coisa, eu dou outro "grito" para vocês.
> 
>  
> 
> Abraços
> 
>  
> 
>   _  
> 
> De: oracle_br@yahoogrupos.com.br [mailto:oracle...@yahoogrupos.com.br] Em
> nome de jlchiappa
> Enviada em: terça-feira, 20 de outubro de 2009 13:45
> Para: oracle_br@yahoogrupos.com.br
> Assunto: RES: [oracle_br] Re: Consulta SCPC via forms6i
> 
>  
> 
>   
> 
> Então agora tá claro, é o que eu disse, iirc o pacote de SOCKETs pronto do
> Forms 6i só funciona pra forms em modo web, vc VAI TER QUE ir pra api do
> windows, http://www.soft411.
> <http://www.soft411.com/software/tcp-ip-winsock-component.html>
> com/software/tcp-ip-winsock-component.html tem uns exemplos da api em si :
> pra chamar a API vc precisará usar ou instalar a extensão d2kwutil no seu
> forms (no README dela e no form de exemplo que vem com ela tem uns poucos
> exemplos) , ou como eu disse escrever uma .dll (em C, provavelmente) a ser
> chamada pelo seu forms, googleia por oracle forms call C dll que vc deve
> achar umas refs... O X da questão é que necessariamente isso é um projeto de
> pesquisa em si, e vai rapidamente ser inviabilizado se vc não tiver uma
> mínima experiência com essas tools.
> Em cima disso, eu pergunto : exatamente POR QUE tem que ser feito exatamente
> de dentro do Forms, não seria possível meios low-tech tipo vc (por exemplo)
> escrever um programa Delphi (que gera um .EXE) que leia a eventual info
> necessária dum arquivo-texto que o forms gravou via TEXT_IO, sendo esse
> programinha chamado do Forms via HOST, aí o delphi conecta, faz tudo que vc
> quer, obtém a informação, a GRAVA num arquivo-texto e no final o Forms lê
> esse arquivo de resultado  Ou escrever uma página html com um
> javascriptzinho que faça o mesmo e chamar essa página via HOST ?? A questão
> toda é que uma linguagem client/server DIFICILMENTE vai ter prontinhas
> rotinas pra acessar web, abrir comunicação tcp/ip, fazer ftp , neca...
> 
> E sim, SE como eu disse o Servidor de banco tem acesso à web usar PL/SQL no
> banco (via UTL_HTTP) ou java pode sim ser viável...
> 
> []s
> 
> Chiappa
> --- Em oracle...@yahoogrup <mailto:oracle_br%40yahoogrupos.com.br>
> os.com.br, "Mauricio Roberto Maciel"  escreveu
> >
> > Obrigado pelo retorno.
> > 
> > 
> > 
> > È forms6i client/Server. Via Host não dá certo. Segundo o analista teria
> > que ser utilizando SOCKET.Não sei como se faz isso no forms6i. Ele me
> enviou
> > alguns exemplos em Delphi, mas não existem comandos equivalentes no
> forms6i.
> > Sinceramente eu não estou sabendo por onde começar. Gostaria de algum
> > exemplo. Vou pesquisar sobre essa UTL_HTTP.
> > 
> > 
> > 
> > 
> > 
> > 
> > 
> > _ 
> > 
> > De: oracle...@yahoogrup <mailto:oracle_br%40yahoogrupos.com.br> os.com.br
> [mailto:oracle...@yahoogrup <mailto:oracle_br%40yahoogrupos.com.br>
> os.com.br] Em
> > nome de jlchiappa
> > Enviada em: terça-feira, 20 de outubro de 2009 12:50
> > Para: oracle...@yahoogrup <mailto:oracle_br%40yahoogrupos.com.br>
> os.com.br
> > Assunto: [oracle_br] Re: Consulta SCPC via forms6i
> > 
> > 
> > 
> > 
> > 
> > O ** mais ** importante vc Não Diz, é forms 6i client/server OU web ??? Se
> > for client/server provavelmente muito mais simples seria via HOST vc
> chamar
> > o internet explorer (ou que browser for) passando como argumento na linha
> de
> > comando da chamada o endereço, tipo HOST('pathdobrowser\nomedobrowser.exe
> > http://endereço:porta');
> > 
> > A dificuldade maior seria vc interagir com a página-destino, esse cara só
> > chama e passa o foco pro programa-chamado : iirc o Forms 6i só tem pronto
> um
> > pacote de comunicação via sockets SE o acesso é via web, num Forms rodando
> > em client/server creio que vc teria que chamar as APIs do Windows, ou
> chamar
>

Re: [oracle_br] Re: Consulta SCPC via forms6i

2009-10-20 Por tôpico Marcos Fontana
Blz,

Desenvolve ai e a gente ajuda na depuração se você tiver problemas.

Atenciosamente,

Marcos Fontana

2009/10/20 Mauricio Roberto Maciel 

>
>
> Chiappa, Marcos e demais:
>
> Obrigado pelo retorno.
>
> Acho que a UTL_TCP vai resolver o problema.
>
> Qualquer coisa, eu dou outro “grito” para vocês.
>
> Abraços
>
>
> _
>
> De: oracle_br@yahoogrupos.com.br  [mailto:
> oracle_br@yahoogrupos.com.br ] Em
> nome de jlchiappa
> Enviada em: terça-feira, 20 de outubro de 2009 13:45
> Para: oracle_br@yahoogrupos.com.br 
> Assunto: RES: [oracle_br] Re: Consulta SCPC via forms6i
>
>
> Então agora tá claro, é o que eu disse, iirc o pacote de SOCKETs pronto do
> Forms 6i só funciona pra forms em modo web, vc VAI TER QUE ir pra api do
> windows, http://www.soft411.
> <http://www.soft411.com/software/tcp-ip-winsock-component.html>
> com/software/tcp-ip-winsock-component.html tem uns exemplos da api em si :
> pra chamar a API vc precisará usar ou instalar a extensão d2kwutil no seu
> forms (no README dela e no form de exemplo que vem com ela tem uns poucos
> exemplos) , ou como eu disse escrever uma .dll (em C, provavelmente) a ser
> chamada pelo seu forms, googleia por oracle forms call C dll que vc deve
> achar umas refs... O X da questão é que necessariamente isso é um projeto
> de
> pesquisa em si, e vai rapidamente ser inviabilizado se vc não tiver uma
> mínima experiência com essas tools.
> Em cima disso, eu pergunto : exatamente POR QUE tem que ser feito
> exatamente
> de dentro do Forms, não seria possível meios low-tech tipo vc (por exemplo)
> escrever um programa Delphi (que gera um .EXE) que leia a eventual info
> necessária dum arquivo-texto que o forms gravou via TEXT_IO, sendo esse
> programinha chamado do Forms via HOST, aí o delphi conecta, faz tudo que vc
> quer, obtém a informação, a GRAVA num arquivo-texto e no final o Forms lê
> esse arquivo de resultado  Ou escrever uma página html com um
> javascriptzinho que faça o mesmo e chamar essa página via HOST ?? A questão
> toda é que uma linguagem client/server DIFICILMENTE vai ter prontinhas
> rotinas pra acessar web, abrir comunicação tcp/ip, fazer ftp , neca...
>
> E sim, SE como eu disse o Servidor de banco tem acesso à web usar PL/SQL no
> banco (via UTL_HTTP) ou java pode sim ser viável...
>
> []s
>
> Chiappa
> --- Em oracle...@yahoogrup 
> <mailto:oracle_br%40yahoogrupos.com.br
> >
> os.com.br, "Mauricio Roberto Maciel"  escreveu
> >
> > Obrigado pelo retorno.
> >
> >
> >
> > È forms6i client/Server. Via Host não dá certo. Segundo o analista teria
> > que ser utilizando SOCKET.Não sei como se faz isso no forms6i. Ele me
> enviou
> > alguns exemplos em Delphi, mas não existem comandos equivalentes no
> forms6i.
> > Sinceramente eu não estou sabendo por onde começar. Gostaria de algum
> > exemplo. Vou pesquisar sobre essa UTL_HTTP.
> >
> >
> >
> >
> >
> >
> >
> > _
> >
> > De: oracle...@yahoogrup 
> > <mailto:oracle_br%40yahoogrupos.com.br>
> os.com.br
> [mailto:oracle...@yahoogrup 
> <mailto:oracle_br%40yahoogrupos.com.br
> >
> os.com.br] Em
> > nome de jlchiappa
> > Enviada em: terça-feira, 20 de outubro de 2009 12:50
> > Para: oracle...@yahoogrup 
> > <mailto:oracle_br%40yahoogrupos.com.br
> >
>
> os.com.br
> > Assunto: [oracle_br] Re: Consulta SCPC via forms6i
> >
> >
> >
> >
> >
> > O ** mais ** importante vc Não Diz, é forms 6i client/server OU web ???
> Se
> > for client/server provavelmente muito mais simples seria via HOST vc
> chamar
> > o internet explorer (ou que browser for) passando como argumento na linha
> de
> > comando da chamada o endereço, tipo HOST('pathdobrowser\nomedobrowser.exe
> > http://endereço:porta');
> >
> > A dificuldade maior seria vc interagir com a página-destino, esse cara só
> > chama e passa o foco pro programa-chamado : iirc o Forms 6i só tem pronto
> um
> > pacote de comunicação via sockets SE o acesso é via web, num Forms
> rodando
> > em client/server creio que vc teria que chamar as APIs do Windows, ou
> chamar
> > uma lib/function externa criado em C por vc que faça o que vc quer, ambas
> > opções bem trabalhosas ...
> >
> > Já ser for Forms 6i EM MODO WEB, certamente a package Web.Show_Document()
> é
> > Built-in e está presente, vc a poderia usar...
> >
> > E finalmente, se o BANCO DE DADOS tem acesso à web, há o caminho de usar
> o
> > banco : vc poderia criar uma procedure nele usando a package UTL_HTTP
> (ela
> > tem

RES: [oracle_br] Re: Consulta SCPC via forms6i

2009-10-20 Por tôpico Mauricio Roberto Maciel
Chiappa, Marcos e demais:

 

Obrigado pelo retorno.

 

Acho que a UTL_TCP vai resolver o problema.

 

Qualquer coisa, eu dou outro “grito” para vocês.

 

Abraços

 

  _  

De: oracle_br@yahoogrupos.com.br [mailto:oracle...@yahoogrupos.com.br] Em
nome de jlchiappa
Enviada em: terça-feira, 20 de outubro de 2009 13:45
Para: oracle_br@yahoogrupos.com.br
Assunto: RES: [oracle_br] Re: Consulta SCPC via forms6i

 

  

Então agora tá claro, é o que eu disse, iirc o pacote de SOCKETs pronto do
Forms 6i só funciona pra forms em modo web, vc VAI TER QUE ir pra api do
windows, http://www.soft411.
<http://www.soft411.com/software/tcp-ip-winsock-component.html>
com/software/tcp-ip-winsock-component.html tem uns exemplos da api em si :
pra chamar a API vc precisará usar ou instalar a extensão d2kwutil no seu
forms (no README dela e no form de exemplo que vem com ela tem uns poucos
exemplos) , ou como eu disse escrever uma .dll (em C, provavelmente) a ser
chamada pelo seu forms, googleia por oracle forms call C dll que vc deve
achar umas refs... O X da questão é que necessariamente isso é um projeto de
pesquisa em si, e vai rapidamente ser inviabilizado se vc não tiver uma
mínima experiência com essas tools.
Em cima disso, eu pergunto : exatamente POR QUE tem que ser feito exatamente
de dentro do Forms, não seria possível meios low-tech tipo vc (por exemplo)
escrever um programa Delphi (que gera um .EXE) que leia a eventual info
necessária dum arquivo-texto que o forms gravou via TEXT_IO, sendo esse
programinha chamado do Forms via HOST, aí o delphi conecta, faz tudo que vc
quer, obtém a informação, a GRAVA num arquivo-texto e no final o Forms lê
esse arquivo de resultado  Ou escrever uma página html com um
javascriptzinho que faça o mesmo e chamar essa página via HOST ?? A questão
toda é que uma linguagem client/server DIFICILMENTE vai ter prontinhas
rotinas pra acessar web, abrir comunicação tcp/ip, fazer ftp , neca...

E sim, SE como eu disse o Servidor de banco tem acesso à web usar PL/SQL no
banco (via UTL_HTTP) ou java pode sim ser viável...

[]s

Chiappa
--- Em oracle...@yahoogrup <mailto:oracle_br%40yahoogrupos.com.br>
os.com.br, "Mauricio Roberto Maciel"  escreveu
>
> Obrigado pelo retorno.
> 
> 
> 
> È forms6i client/Server. Via Host não dá certo. Segundo o analista teria
> que ser utilizando SOCKET.Não sei como se faz isso no forms6i. Ele me
enviou
> alguns exemplos em Delphi, mas não existem comandos equivalentes no
forms6i.
> Sinceramente eu não estou sabendo por onde começar. Gostaria de algum
> exemplo. Vou pesquisar sobre essa UTL_HTTP.
> 
> 
> 
> 
> 
> 
> 
> _ 
> 
> De: oracle...@yahoogrup <mailto:oracle_br%40yahoogrupos.com.br> os.com.br
[mailto:oracle...@yahoogrup <mailto:oracle_br%40yahoogrupos.com.br>
os.com.br] Em
> nome de jlchiappa
> Enviada em: terça-feira, 20 de outubro de 2009 12:50
> Para: oracle...@yahoogrup <mailto:oracle_br%40yahoogrupos.com.br>
os.com.br
> Assunto: [oracle_br] Re: Consulta SCPC via forms6i
> 
> 
> 
> 
> 
> O ** mais ** importante vc Não Diz, é forms 6i client/server OU web ??? Se
> for client/server provavelmente muito mais simples seria via HOST vc
chamar
> o internet explorer (ou que browser for) passando como argumento na linha
de
> comando da chamada o endereço, tipo HOST('pathdobrowser\nomedobrowser.exe
> http://endereço:porta');
> 
> A dificuldade maior seria vc interagir com a página-destino, esse cara só
> chama e passa o foco pro programa-chamado : iirc o Forms 6i só tem pronto
um
> pacote de comunicação via sockets SE o acesso é via web, num Forms rodando
> em client/server creio que vc teria que chamar as APIs do Windows, ou
chamar
> uma lib/function externa criado em C por vc que faça o que vc quer, ambas
> opções bem trabalhosas ... 
> 
> Já ser for Forms 6i EM MODO WEB, certamente a package Web.Show_Document()
é
> Built-in e está presente, vc a poderia usar...
> 
> E finalmente, se o BANCO DE DADOS tem acesso à web, há o caminho de usar o
> banco : vc poderia criar uma procedure nele usando a package UTL_HTTP (ela
> tem comandos pra obter info de página web) , ou mesmo java no banco,
também
> poderia funcionar... 
> 
> []s
> 
> Chiappa
> 
> --- Em oracle...@yahoogrup <mailto:oracle_br%40yahoogrupos.com.br>
> os.com.br, "Mauricio Roberto Maciel"  escreveu
> >
> > Caros colegas:
> > 
> > 
> > 
> > Boa tarde!
> > 
> > 
> > 
> > Necessito efetuar o procedimento acima. Alguém já fez? O pessoal do SCPC
> > passou um layout através do qual desenvolvo uma string e faço uma
chamada
> em
> > um endereço:porta designado por eles. Posteriormente o servidor voltará
o
> > resultado do retorno.
> > 
> > 
> > 
> > Segundo 

Re: [oracle_br] Re: Consulta SCPC via forms6i

2009-10-20 Por tôpico Marcos Fontana
É,

O código de delphi tem tudo que é necessário para implementar a chamada via
UTL_TCP ou fazer uma classe java no Oracle.Ai vai da escolha de cada um. A
única coisa que eu não vi é o host e porta de destino, que são passados via
text box, mas isso você deve ter ai. O negócio é fazer um procedure que faça
a chamada e você chamar via forms passando os parâmetros necessários igual
ao CPF, RG, data de nascimento  O que você vai ter que fazer ainda é
validar estes campos que vão ter que ser apresentados no FORMS igual CPF. Do
jeito que vi ai ta facinho. O que você tem que ter cuidado é saber se o cara
precisa de LF ou CR/LF quando for enviar os dados, no mais é tranquilo.

Te aconselho a olhar uns exemplos com o UTL_TCP primeiro caso você não tenha
skills de java. Se souber java, vai nele direto.

Atenciosamente,

Marcos Fontana

2009/10/20 jlchiappa 

>
>
> Ah sim, que fique claro, a package UTL_HTTP, como o nome diz, se comunica
> via protocol http, eu pensei de cara nela porque inquestionavelmente é a
> mais comum, mas realmente pode não ser : é SE o tal 'serviço' ou o que for
> estiver acessível via http ok, a utl_http deve servir , senão realmente ele
> teria que baixar mais ainda o nível e manualmente abrir conexão tcp/ip via
> package TCP, enviar um a um os comandos necessários para o protocolo em
> questão, sim, pensando em solução a nível de banco...
>
> []s
>
> Chiappa
> --- Em oracle_br@yahoogrupos.com.br ,
> Marcos Fontana  escreveu
>
> >
> > Mas Chiappa,
> >
> > Em momento algum ele disse que a porta para onde a string tem que ser
> > enviada é um servidor HTTP. Provavelmente não é já que o fornecedor
> > apresentou o layout da string. Se for via banco, acho que vai ter que ser
> > via UTL_TCP. Caro Mauricio, o fornecedor informou se a chamada usa SOAP
> ou
> > qualquer coisa assim ou é um protocolo fechado mesmo? Se for via SOAP
> talvez
> > da pra usar um AJAX se for via WEB mas se for via, se for via
> Client/Server
> > ai já não sei, mas o formsdeve ter isso também.
> >
> > Atenciosamente,
> >
> > Marcos Fontana
> > DBA Oracle
> >
> > 2009/10/20 jlchiappa 
> >
> > >
> > >
> > > O ** mais ** importante vc Não Diz, é forms 6i client/server OU web ???
> Se
> > > for client/server provavelmente muito mais simples seria via HOST vc
> chamar
> > > o internet explorer (ou que browser for) passando como argumento na
> linha de
> > > comando da chamada o endereço, tipo
> HOST('pathdobrowser\nomedobrowser.exe
> > > http://endereço:porta');
> > >
> > > A dificuldade maior seria vc interagir com a página-destino, esse cara
> só
> > > chama e passa o foco pro programa-chamado : iirc o Forms 6i só tem
> pronto um
> > > pacote de comunicação via sockets SE o acesso é via web, num Forms
> rodando
> > > em client/server creio que vc teria que chamar as APIs do Windows, ou
> chamar
> > > uma lib/function externa criado em C por vc que faça o que vc quer,
> ambas
> > > opções bem trabalhosas ...
> > >
> > > Já ser for Forms 6i EM MODO WEB, certamente a package
> Web.Show_Document() é
> > > Built-in e está presente, vc a poderia usar...
> > >
> > > E finalmente, se o BANCO DE DADOS tem acesso à web, há o caminho de
> usar o
> > > banco : vc poderia criar uma procedure nele usando a package UTL_HTTP
> (ela
> > > tem comandos pra obter info de página web) , ou mesmo java no banco,
> também
> > > poderia funcionar...
> > >
> > > []s
> > >
> > > Chiappa
> > >
> > > --- Em oracle_br@yahoogrupos.com.br 
> > >  40yahoogrupos.com.br>,
> > > "Mauricio Roberto Maciel"  escreveu
> > >
> > > >
> > > > Caros colegas:
> > > >
> > > >
> > > >
> > > > Boa tarde!
> > > >
> > > >
> > > >
> > > > Necessito efetuar o procedimento acima. Alguém já fez? O pessoal do
> SCPC
> > > > passou um layout através do qual desenvolvo uma string e faço uma
> chamada
> > > em
> > > > um endereço:porta designado por eles. Posteriormente o servidor
> voltará o
> > > > resultado do retorno.
> > > >
> > > >
> > > >
> > > > Segundo o analista deles, devo desenvolver o procedimento utilizando
> > > SOCKET.
> > > > Alguém já fez? Ou tem algum link nesse sentido?
> > > >
> > > >
> > > >
> > > > Agradeço retorno
> > > >
> > > > Mauricio
> > > >
> > > >
> > > >
> > > > [As partes desta mensagem que não continham texto foram removidas]
> > > >
> > >
> > >
> > >
> >
> >
> > [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: Consulta SCPC via forms6i

2009-10-20 Por tôpico jlchiappa
Ah sim, que fique claro, a package UTL_HTTP, como o nome diz, se comunica via 
protocol http, eu pensei de cara nela porque inquestionavelmente é a mais 
comum, mas realmente pode não ser : é SE o tal 'serviço' ou o que for estiver 
acessível via http ok, a utl_http deve servir , senão realmente ele teria que 
baixar mais ainda o nível e manualmente abrir conexão tcp/ip via package TCP, 
enviar um a um os comandos necessários para o protocolo em questão, sim, 
pensando em solução a nível de banco...

 []s

   Chiappa
--- Em oracle_br@yahoogrupos.com.br, Marcos Fontana  
escreveu
>
> Mas Chiappa,
> 
> Em momento algum ele disse que a porta para onde a string tem que ser
> enviada é um servidor HTTP. Provavelmente não é já que o fornecedor
> apresentou o layout da string. Se for via banco, acho que vai ter que ser
> via UTL_TCP. Caro Mauricio, o fornecedor informou se a chamada usa SOAP ou
> qualquer coisa assim ou é um protocolo fechado mesmo? Se for via SOAP talvez
> da pra usar um AJAX se for via WEB mas se for via, se for via Client/Server
> ai já não sei, mas o formsdeve ter isso também.
> 
> Atenciosamente,
> 
> Marcos Fontana
> DBA Oracle
> 
> 2009/10/20 jlchiappa 
> 
> >
> >
> > O ** mais ** importante vc Não Diz, é forms 6i client/server OU web ??? Se
> > for client/server provavelmente muito mais simples seria via HOST vc chamar
> > o internet explorer (ou que browser for) passando como argumento na linha de
> > comando da chamada o endereço, tipo HOST('pathdobrowser\nomedobrowser.exe
> > http://endereço:porta');
> >
> > A dificuldade maior seria vc interagir com a página-destino, esse cara só
> > chama e passa o foco pro programa-chamado : iirc o Forms 6i só tem pronto um
> > pacote de comunicação via sockets SE o acesso é via web, num Forms rodando
> > em client/server creio que vc teria que chamar as APIs do Windows, ou chamar
> > uma lib/function externa criado em C por vc que faça o que vc quer, ambas
> > opções bem trabalhosas ...
> >
> > Já ser for Forms 6i EM MODO WEB, certamente a package Web.Show_Document() é
> > Built-in e está presente, vc a poderia usar...
> >
> > E finalmente, se o BANCO DE DADOS tem acesso à web, há o caminho de usar o
> > banco : vc poderia criar uma procedure nele usando a package UTL_HTTP (ela
> > tem comandos pra obter info de página web) , ou mesmo java no banco, também
> > poderia funcionar...
> >
> > []s
> >
> > Chiappa
> >
> > --- Em oracle_br@yahoogrupos.com.br ,
> > "Mauricio Roberto Maciel"  escreveu
> >
> > >
> > > Caros colegas:
> > >
> > >
> > >
> > > Boa tarde!
> > >
> > >
> > >
> > > Necessito efetuar o procedimento acima. Alguém já fez? O pessoal do SCPC
> > > passou um layout através do qual desenvolvo uma string e faço uma chamada
> > em
> > > um endereço:porta designado por eles. Posteriormente o servidor voltará o
> > > resultado do retorno.
> > >
> > >
> > >
> > > Segundo o analista deles, devo desenvolver o procedimento utilizando
> > SOCKET.
> > > Alguém já fez? Ou tem algum link nesse sentido?
> > >
> > >
> > >
> > > Agradeço retorno
> > >
> > > Mauricio
> > >
> > >
> > >
> > > [As partes desta mensagem que não continham texto foram removidas]
> > >
> >
> >  
> >
> 
> 
> [As partes desta mensagem que não continham texto foram removidas]
>




RES: [oracle_br] Re: Consulta SCPC via forms6i

2009-10-20 Por tôpico jlchiappa
Então agora tá claro, é o que eu disse, iirc o pacote de SOCKETs pronto do 
Forms 6i só funciona pra forms em modo web, vc VAI TER QUE ir pra api do 
windows, http://www.soft411.com/software/tcp-ip-winsock-component.html tem uns 
exemplos da api em si : pra chamar a API vc precisará usar ou instalar a 
extensão d2kwutil no seu forms (no README dela e no form de exemplo que vem com 
ela tem uns poucos exemplos) , ou como eu disse escrever uma .dll (em C, 
provavelmente) a ser chamada pelo seu forms, googleia por oracle forms call C 
dll que vc deve achar umas refs... O X da questão é que necessariamente isso é 
um projeto de pesquisa em si, e vai rapidamente ser inviabilizado se vc não 
tiver uma mínima experiência com essas tools.
 Em cima disso, eu pergunto : exatamente POR QUE tem que ser feito exatamente 
de dentro do Forms, não seria possível meios low-tech tipo vc (por exemplo) 
escrever um programa Delphi (que gera um .EXE) que leia a eventual info 
necessária dum arquivo-texto que o forms gravou via TEXT_IO, sendo esse 
programinha chamado do Forms via HOST, aí o delphi conecta, faz tudo que vc 
quer, obtém a informação, a GRAVA num arquivo-texto e no final o Forms lê esse 
arquivo de resultado  Ou escrever uma página html com um javascriptzinho 
que faça o mesmo e chamar essa página via HOST ?? A questão toda é que uma 
linguagem client/server DIFICILMENTE vai ter prontinhas rotinas pra acessar 
web, abrir comunicação tcp/ip, fazer ftp , neca...

 E sim, SE como eu disse o Servidor de banco tem acesso à web usar PL/SQL no 
banco (via UTL_HTTP) ou java pode sim ser viável...

 []s

  Chiappa
--- Em oracle_br@yahoogrupos.com.br, "Mauricio Roberto Maciel" 
 escreveu
>
> Obrigado pelo retorno.
> 
>  
> 
> È forms6i client/Server.  Via Host não dá certo. Segundo o analista teria
> que ser utilizando SOCKET.Não sei como se faz isso no forms6i. Ele me enviou
> alguns exemplos em Delphi, mas não existem comandos equivalentes no forms6i.
> Sinceramente eu não estou sabendo por onde começar. Gostaria de algum
> exemplo. Vou pesquisar sobre essa UTL_HTTP.
> 
>  
> 
>  
> 
>  
> 
>   _  
> 
> De: oracle_br@yahoogrupos.com.br [mailto:oracle...@yahoogrupos.com.br] Em
> nome de jlchiappa
> Enviada em: terça-feira, 20 de outubro de 2009 12:50
> Para: oracle_br@yahoogrupos.com.br
> Assunto: [oracle_br] Re: Consulta SCPC via forms6i
> 
>  
> 
>   
> 
> O ** mais ** importante vc Não Diz, é forms 6i client/server OU web ??? Se
> for client/server provavelmente muito mais simples seria via HOST vc chamar
> o internet explorer (ou que browser for) passando como argumento na linha de
> comando da chamada o endereço, tipo HOST('pathdobrowser\nomedobrowser.exe
> http://endereço:porta');
> 
> A dificuldade maior seria vc interagir com a página-destino, esse cara só
> chama e passa o foco pro programa-chamado : iirc o Forms 6i só tem pronto um
> pacote de comunicação via sockets SE o acesso é via web, num Forms rodando
> em client/server creio que vc teria que chamar as APIs do Windows, ou chamar
> uma lib/function externa criado em C por vc que faça o que vc quer, ambas
> opções bem trabalhosas ... 
> 
> Já ser for Forms 6i EM MODO WEB, certamente a package Web.Show_Document() é
> Built-in e está presente, vc a poderia usar...
> 
> E finalmente, se o BANCO DE DADOS tem acesso à web, há o caminho de usar o
> banco : vc poderia criar uma procedure nele usando a package UTL_HTTP (ela
> tem comandos pra obter info de página web) , ou mesmo java no banco, também
> poderia funcionar... 
> 
> []s
> 
> Chiappa
> 
> --- Em oracle...@yahoogrup <mailto:oracle_br%40yahoogrupos.com.br>
> os.com.br, "Mauricio Roberto Maciel"  escreveu
> >
> > Caros colegas:
> > 
> > 
> > 
> > Boa tarde!
> > 
> > 
> > 
> > Necessito efetuar o procedimento acima. Alguém já fez? O pessoal do SCPC
> > passou um layout através do qual desenvolvo uma string e faço uma chamada
> em
> > um endereço:porta designado por eles. Posteriormente o servidor voltará o
> > resultado do retorno.
> > 
> > 
> > 
> > Segundo o analista deles, devo desenvolver o procedimento utilizando
> SOCKET.
> > Alguém já fez? Ou tem algum link nesse sentido?
> > 
> > 
> > 
> > Agradeço retorno
> > 
> > Mauricio
> > 
> > 
> > 
> > [As partes desta mensagem que não continham texto foram removidas]
> >
> 
> 
> 
> 
> 
> [As partes desta mensagem que não continham texto foram removidas]
>




RES: [oracle_br] Re: Consulta SCPC via forms6i

2009-10-20 Por tôpico Mauricio Roberto Maciel
 := '';

ResultCons := '';

 

lblRetorno.Caption := '';

lblNumero.Caption  := '';

 

IdTCPClient.Host := edtIP.Text;

IdTCPClient.Port := StrToInt(edtPorta.Text);

IdTCPClient.Connect(1); {Timeout de 10 segundos}

 

repeat

  NovaReq := False;

 

  {Tenta enviar a string do layout para o servidor de aplicação...}

  IdTCPClient.Write(Requisicao);

 

  {Espera o retorno da resposta do servidor}

  Resposta := IdTCPClient.CurrentReadBuffer;

 

  {Verifica se o servidor retornou alguma resposta vazia}

  if Trim(Resposta) = '' then

raise Exception.Create('O servidor retornou uma resposta
inesperada.');

 

  {Pega o retorno da resposta}

  CodigoRet := Copy(Resposta, 40, 1);

 

  {Texto da Resposta}

  Texto01 := Copy(Resposta, 049, 79);

  Texto02 := Copy(Resposta, 128, 79);

  Texto03 := Copy(Resposta, 207, 79);

  Texto04 := Copy(Resposta, 286, 79);

  Texto05 := Copy(Resposta, 365, 79);

  Texto06 := Copy(Resposta, 444, 79);

  Texto07 := Copy(Resposta, 523, 79);

  Texto08 := Copy(Resposta, 602, 79);

  Texto09 := Copy(Resposta, 681, 79);

  Texto10 := Copy(Resposta, 760, 79);

  Texto11 := Copy(Resposta, 839, 79);

  Texto12 := Copy(Resposta, 918, 79);

 

  {Verifica se houve erro}

  if CodigoRet = '9' then

mmoResposta.Lines.Add(Texto01)

  else

  begin

{Quantidade de textos preenchidos}

QtdeTextos := StrToInt(Copy(Resposta, 47, 2));

 

{Verifica o resultado da consulta}

ResultCons := Copy(Resposta, 41, 1);

 

{Número da consulta ---> virá apenas quando nada consta}

lblNumero.Caption := Copy(Resposta, 42, 5);

 

{Verifica se a transmissão foi concluida}

if QtdeTextos >= 01 then mmoResposta.Lines.Add(Texto01);

if QtdeTextos >= 02 then mmoResposta.Lines.Add(Texto02);

if QtdeTextos >= 03 then mmoResposta.Lines.Add(Texto03);

if QtdeTextos >= 04 then mmoResposta.Lines.Add(Texto04);

if QtdeTextos >= 05 then mmoResposta.Lines.Add(Texto05);

if QtdeTextos >= 06 then mmoResposta.Lines.Add(Texto06);

if QtdeTextos >= 07 then mmoResposta.Lines.Add(Texto07);

if QtdeTextos >= 08 then mmoResposta.Lines.Add(Texto08);

if QtdeTextos >= 09 then mmoResposta.Lines.Add(Texto09);

if QtdeTextos >= 10 then mmoResposta.Lines.Add(Texto10);

if QtdeTextos >= 11 then mmoResposta.Lines.Add(Texto11);

if QtdeTextos  = 12 then mmoResposta.Lines.Add(Texto12);

 

{Verifica se a existem dados para serem transmitidos}

if CodigoRet = '1' then

begin

  NovaReq := True;

  Requisicao := #13;

end;

  end;

 

until NovaReq = False;

 

if ResultCons = '0' then lblRetorno.Caption := 'Nada Consta'

else

if ResultCons = '1' then lblRetorno.Caption := 'Nada Consta com
Passagem'

else

if ResultCons = '2' then lblRetorno.Caption := 'Constam Informações';

 

  finally

IdTCPClient.Disconnect;

  end;

end;

 

 

end.

 

  _  

De: oracle_br@yahoogrupos.com.br [mailto:oracle...@yahoogrupos.com.br] Em
nome de Marcos Fontana
Enviada em: terça-feira, 20 de outubro de 2009 13:19
Para: oracle_br@yahoogrupos.com.br
Assunto: Re: [oracle_br] Re: Consulta SCPC via forms6i

 

  

Cola aqui o exemplo em delphi... Anexo não funciona.

Atenciosamente,

Marcos Fontana

2009/10/20 Mauricio Roberto Maciel mailto:mauriciormaciel%40terra.com.br> terra.com.br>

>
>
> Obrigado pelo retorno.
>
> È forms6i client/Server. Via Host não dá certo. Segundo o analista teria
> que ser utilizando SOCKET.Não sei como se faz isso no forms6i. Ele me
> enviou
> alguns exemplos em Delphi, mas não existem comandos equivalentes no
> forms6i.
> Sinceramente eu não estou sabendo por onde começar. Gostaria de algum
> exemplo. Vou pesquisar sobre essa UTL_HTTP.
>
> _
>
> De: oracle...@yahoogrup <mailto:oracle_br%40yahoogrupos.com.br> os.com.br
 [mailto:
> oracle...@yahoogrup <mailto:oracle_br%40yahoogrupos.com.br> os.com.br
] Em
> nome de jlchiappa
> Enviada em: terça-feira, 20 de outubro de 2009 12:50
> Para: oracle...@yahoogrup <mailto:oracle_br%40yahoogrupos.com.br>
os.com.br 
> Assunto: [oracle_br] Re: Consulta SCPC via forms6i
>
>
> O ** mais ** importante vc Não Diz, é forms 6i client/server OU web ??? Se
> for client/server provavelmente muito mais simples seria via HOST vc
chamar
> o internet explorer (ou que browser for) passando como argumento na linha
> de
> comando da chamada o endereço, tipo HOST('pathdobrowser\nomedobrowser.exe
> http://endereço:porta');
>

Re: [oracle_br] Re: Consulta SCPC via forms6i

2009-10-20 Por tôpico Marcos Fontana
Cola aqui o exemplo em delphi... Anexo não funciona.

Atenciosamente,

Marcos Fontana

2009/10/20 Mauricio Roberto Maciel 

>
>
> Obrigado pelo retorno.
>
> È forms6i client/Server. Via Host não dá certo. Segundo o analista teria
> que ser utilizando SOCKET.Não sei como se faz isso no forms6i. Ele me
> enviou
> alguns exemplos em Delphi, mas não existem comandos equivalentes no
> forms6i.
> Sinceramente eu não estou sabendo por onde começar. Gostaria de algum
> exemplo. Vou pesquisar sobre essa UTL_HTTP.
>
> _
>
> De: oracle_br@yahoogrupos.com.br  [mailto:
> oracle_br@yahoogrupos.com.br ] Em
> nome de jlchiappa
> Enviada em: terça-feira, 20 de outubro de 2009 12:50
> Para: oracle_br@yahoogrupos.com.br 
> Assunto: [oracle_br] Re: Consulta SCPC via forms6i
>
>
> O ** mais ** importante vc Não Diz, é forms 6i client/server OU web ??? Se
> for client/server provavelmente muito mais simples seria via HOST vc chamar
> o internet explorer (ou que browser for) passando como argumento na linha
> de
> comando da chamada o endereço, tipo HOST('pathdobrowser\nomedobrowser.exe
> http://endereço:porta');
>
> A dificuldade maior seria vc interagir com a página-destino, esse cara só
> chama e passa o foco pro programa-chamado : iirc o Forms 6i só tem pronto
> um
> pacote de comunicação via sockets SE o acesso é via web, num Forms rodando
> em client/server creio que vc teria que chamar as APIs do Windows, ou
> chamar
> uma lib/function externa criado em C por vc que faça o que vc quer, ambas
> opções bem trabalhosas ...
>
> Já ser for Forms 6i EM MODO WEB, certamente a package Web.Show_Document() é
> Built-in e está presente, vc a poderia usar...
>
> E finalmente, se o BANCO DE DADOS tem acesso à web, há o caminho de usar o
> banco : vc poderia criar uma procedure nele usando a package UTL_HTTP (ela
> tem comandos pra obter info de página web) , ou mesmo java no banco, também
> poderia funcionar...
>
> []s
>
> Chiappa
>
> --- Em oracle...@yahoogrup 
> <mailto:oracle_br%40yahoogrupos.com.br
> >
> os.com.br, "Mauricio Roberto Maciel"  escreveu
> >
> > Caros colegas:
> >
> >
> >
> > Boa tarde!
> >
> >
> >
> > Necessito efetuar o procedimento acima. Alguém já fez? O pessoal do SCPC
> > passou um layout através do qual desenvolvo uma string e faço uma chamada
> em
> > um endereço:porta designado por eles. Posteriormente o servidor voltará o
> > resultado do retorno.
> >
> >
> >
> > Segundo o analista deles, devo desenvolver o procedimento utilizando
> SOCKET.
> > Alguém já fez? Ou tem algum link nesse sentido?
> >
> >
> >
> > Agradeço retorno
> >
> > Mauricio
> >
> >
> >
> > [As partes desta mensagem que não continham texto foram removidas]
> >
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>  
>


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



Re: [oracle_br] Re: Consulta SCPC via forms6i

2009-10-20 Por tôpico Marcos Fontana
Mas Chiappa,

Em momento algum ele disse que a porta para onde a string tem que ser
enviada é um servidor HTTP. Provavelmente não é já que o fornecedor
apresentou o layout da string. Se for via banco, acho que vai ter que ser
via UTL_TCP. Caro Mauricio, o fornecedor informou se a chamada usa SOAP ou
qualquer coisa assim ou é um protocolo fechado mesmo? Se for via SOAP talvez
da pra usar um AJAX se for via WEB mas se for via, se for via Client/Server
ai já não sei, mas o formsdeve ter isso também.

Atenciosamente,

Marcos Fontana
DBA Oracle

2009/10/20 jlchiappa 

>
>
> O ** mais ** importante vc Não Diz, é forms 6i client/server OU web ??? Se
> for client/server provavelmente muito mais simples seria via HOST vc chamar
> o internet explorer (ou que browser for) passando como argumento na linha de
> comando da chamada o endereço, tipo HOST('pathdobrowser\nomedobrowser.exe
> http://endereço:porta');
>
> A dificuldade maior seria vc interagir com a página-destino, esse cara só
> chama e passa o foco pro programa-chamado : iirc o Forms 6i só tem pronto um
> pacote de comunicação via sockets SE o acesso é via web, num Forms rodando
> em client/server creio que vc teria que chamar as APIs do Windows, ou chamar
> uma lib/function externa criado em C por vc que faça o que vc quer, ambas
> opções bem trabalhosas ...
>
> Já ser for Forms 6i EM MODO WEB, certamente a package Web.Show_Document() é
> Built-in e está presente, vc a poderia usar...
>
> E finalmente, se o BANCO DE DADOS tem acesso à web, há o caminho de usar o
> banco : vc poderia criar uma procedure nele usando a package UTL_HTTP (ela
> tem comandos pra obter info de página web) , ou mesmo java no banco, também
> poderia funcionar...
>
> []s
>
> Chiappa
>
> --- Em oracle_br@yahoogrupos.com.br ,
> "Mauricio Roberto Maciel"  escreveu
>
> >
> > Caros colegas:
> >
> >
> >
> > Boa tarde!
> >
> >
> >
> > Necessito efetuar o procedimento acima. Alguém já fez? O pessoal do SCPC
> > passou um layout através do qual desenvolvo uma string e faço uma chamada
> em
> > um endereço:porta designado por eles. Posteriormente o servidor voltará o
> > resultado do retorno.
> >
> >
> >
> > Segundo o analista deles, devo desenvolver o procedimento utilizando
> SOCKET.
> > Alguém já fez? Ou tem algum link nesse sentido?
> >
> >
> >
> > Agradeço retorno
> >
> > Mauricio
> >
> >
> >
> > [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: Consulta SCPC via forms6i

2009-10-20 Por tôpico jlchiappa
O ** mais ** importante vc Não Diz, é forms 6i client/server OU web ??? Se for 
client/server provavelmente muito mais simples seria via HOST vc chamar o 
internet explorer (ou que browser for) passando como argumento na linha de 
comando da chamada o endereço, tipo HOST('pathdobrowser\nomedobrowser.exe 
http://endereço:porta');

 A dificuldade maior seria vc interagir com a página-destino, esse cara só 
chama e passa o foco pro programa-chamado : iirc o Forms 6i só tem pronto um 
pacote de comunicação via sockets SE o acesso é via web, num Forms rodando em 
client/server creio que vc teria que chamar as APIs do Windows, ou chamar uma 
lib/function externa criado em C por vc que faça o que vc quer, ambas opções 
bem trabalhosas ... 

 Já ser for Forms 6i EM MODO WEB, certamente a package Web.Show_Document() é 
Built-in e está presente, vc a poderia usar...

 E finalmente, se o BANCO DE DADOS tem acesso à web, há o caminho de usar o 
banco : vc poderia criar uma procedure nele usando a package UTL_HTTP (ela tem 
comandos pra obter info de página web) , ou mesmo java no banco, também poderia 
funcionar... 

 []s

  Chiappa


--- Em oracle_br@yahoogrupos.com.br, "Mauricio Roberto Maciel" 
 escreveu
>
> Caros colegas:
> 
>  
> 
> Boa tarde!
> 
>  
> 
> Necessito efetuar o procedimento acima.  Alguém já fez? O pessoal do SCPC
> passou um layout através do qual desenvolvo uma string e faço uma chamada em
> um endereço:porta designado por eles. Posteriormente o servidor voltará o
> resultado do retorno.
> 
>  
> 
> Segundo o analista deles, devo desenvolver o procedimento utilizando SOCKET.
> Alguém já fez? Ou tem algum link nesse sentido?
> 
>  
> 
> Agradeço retorno
> 
> Mauricio
> 
> 
> 
> [As partes desta mensagem que não continham texto foram removidas]
>




Re: [oracle_br] Re: Consulta X E-mail

2008-06-01 Por tôpico Diego Leite
Obs:Fique Atento a forma de tratamento de erro da sua aplicação caso o
servico de email estiver indisponivel.


2008/5/30 jlchiappa <[EMAIL PROTECTED]>:
> Sem mudar nada mesmo, NÃO TEM COMO, ponto final. Com poucas mudanças -
> por exemplo, adicionando uma trigger na tal tabela que dispare o
> e-mail via UTL_SMTP - vc consegue isso, mas sem mudança alguma não tem
> como, nesse caso só mesmo solicitando ao fornecedor que altere a tal
> rotina, se vc não tem como a alterar.
>
> []s
>
> Chiappa
> --- Em oracle_br@yahoogrupos.com.br, João Paulo Velame <[EMAIL PROTECTED]>
> escreveu
>>
>> O problema é que é um sistema que não tenho acesso a alterar nada.
>>
>>
>> - Original Message -
>> From: jlchiappa
>> To: oracle_br@yahoogrupos.com.br
>> Sent: Friday, May 30, 2008 7:18 PM
>> Subject: [oracle_br] Re: Consulta X E-mail
>>
>>
>> Então, se apenas a tal rotina é que altera o tal campo, adicione nessa
>> rotina o envio de e-mail , se a linguagem aonde ela está desenvolvida
>> for PL/SQL , use a UTL_SMTP (para banco 9i ou inferior) ou a UTL_MAIL
>> se banco 10g. É isso.
>>
>> []s
>>
>> Chiappa
>>
>> --- Em oracle_br@yahoogrupos.com.br, João Paulo Velame 
>> escreveu
>> >
>> > Chiappa,
>> >
>> > É mais simples.
>> >
>> > Tenho uma rotina no sistema que cada vez que acontece um problema na
>> exclusão de um registro o sistema altera um campo com valor igual = 2.
>> >
>> > O que preciso é que toda vez que select count(*) from tabela where
>> status = 2 retornar uma ou mais linhas seja enviado um e-mail.
>> >
>> > A versão do BD é 10.2.0.1.0.
>> >
>> > Grato,
>> >
>> > João Paulo
>> >
>> >
>> > - Original Message -
>> > From: jlchiappa
>> > To: oracle_br@yahoogrupos.com.br
>> > Sent: Thursday, May 29, 2008 10:23 PM
>> > Subject: [oracle_br] Re: Consulta X E-mail
>> >
>> >
>> > Pra começo de conversa, primeiro de tudo veja que no banco
> Oracle ***
>> > não existe ** uma trigger de SELECT, ie, um
>> > procedimento/programa/rotina/job que seja automaticam,ente disparado
>> > após um SELECT, certo? Aí, pra gente poder sugerir, pergunto,
>> > exatamente PARA QUE vc quer isso ??? É tipo para Auditoria, ie, esse
>> > SELECT traz informações tão altamente sigilosas que a cada vez que
>> > forem consultadas vc quer ter um registro de quem fez isso e quando
>> > ? Se é isso, primeiro de tudo RESTRINJA o acesso, ie : crie
> esses
>> > dados num schema cuja senha é tão restrita e controlada quanto a do
>> > DBA , dê GRANT de SELECT desses dados apenas para os poucos
>> > usuários/roles a tal habilitados, talvez até mesmo CRIPTOGRAFANDO
>> > esses dados, cfrme for. Feito isso, vc tem várias opções para
> Auditar
>> > que um SELECT foi feito, dependendo da versão do seu banco (o
> que pra
>> > variar vc não diz :( , mas podem ser usadas FGA, AUDIT ON SELECT,
>> > strored pl/sql que retorna os dados via pipe ou similares E faz a
>> > Auditoria, entre outras. Uma vez obtida uma fonte de dados de
>> > auditoria, vc TANTO pode ter um job que a cada x minutos a
> consulta e
>> > manda e-mail se houve cnsulta desde a última execução do job, ou
> pode
>> > usar alguns macetes, tipo trigger na tabela de auditoria (o que
>> > oficialmente não é recomendado mas funciona), function chamada
> na FGA
>> > ou na pipe procedure, MV refrescada on commit na auditoria , por
> aí...
>> >
>> > Se não for isso, se não é por Auditoria que vc quer ter isso,
>> > explique melhor a sua necessidade que a gente pode tentar palpitar
>> mais...
>> >
>> > []s
>> >
>> > Chiappa
>> > --- Em oracle_br@yahoogrupos.com.br, João Paulo Velame 
>> > escreveu
>> > >
>> > > Bom dia,
>> > >
>> > > Tenho uma consulta simples e gostaria que toda vez que o resultado
>> > dela for uma linha ou mais seja enviado um e-mail de notificação
> pelo
>> > Oracle.
>> > >
>> > > Alguem tem alguma sugestão?
>> > >
>> > > Utilizo Oracle 10g
>> > >
>> > > Grato,
>> > >
>> > > João Paulo
>> > >
>> > > [As partes desta mensagem que não continham texto foram removidas]
>> > >
>> >
>> >
>> >
>> >
>> >
>> > [As partes desta mensagem que não continham texto foram removidas]
>> >
>>
>>
>>
>>
>>
>> [As partes desta mensagem que não continham texto foram removidas]
>>
>
> 



-- 
Att,


Diego Leite - DBA Jr.


[oracle_br] Re: Consulta X E-mail

2008-05-30 Por tôpico jlchiappa
Sem mudar nada mesmo, NÃO TEM COMO, ponto final. Com poucas mudanças -
por exemplo, adicionando uma trigger na tal tabela que dispare o
e-mail via UTL_SMTP - vc consegue isso, mas sem mudança alguma não tem
como, nesse caso só mesmo solicitando ao fornecedor que altere a tal
rotina, se vc não tem como a alterar.

[]s

  Chiappa
--- Em oracle_br@yahoogrupos.com.br, João Paulo Velame <[EMAIL PROTECTED]>
escreveu
>
> O problema é que é um sistema que não tenho acesso a alterar nada.
> 
> 
>   - Original Message - 
>   From: jlchiappa 
>   To: oracle_br@yahoogrupos.com.br 
>   Sent: Friday, May 30, 2008 7:18 PM
>   Subject: [oracle_br] Re: Consulta X E-mail
> 
> 
>   Então, se apenas a tal rotina é que altera o tal campo, adicione nessa
>   rotina o envio de e-mail , se a linguagem aonde ela está desenvolvida
>   for PL/SQL , use a UTL_SMTP (para banco 9i ou inferior) ou a UTL_MAIL
>   se banco 10g. É isso.
> 
>   []s
> 
>   Chiappa
> 
>   --- Em oracle_br@yahoogrupos.com.br, João Paulo Velame 
>   escreveu
>   >
>   > Chiappa,
>   > 
>   > É mais simples.
>   > 
>   > Tenho uma rotina no sistema que cada vez que acontece um problema na
>   exclusão de um registro o sistema altera um campo com valor igual = 2.
>   > 
>   > O que preciso é que toda vez que select count(*) from tabela where
>   status = 2 retornar uma ou mais linhas seja enviado um e-mail.
>   > 
>   > A versão do BD é 10.2.0.1.0.
>   > 
>   > Grato, 
>   > 
>   > João Paulo
>   > 
>   > 
>   > - Original Message - 
>   > From: jlchiappa 
>   > To: oracle_br@yahoogrupos.com.br 
>   > Sent: Thursday, May 29, 2008 10:23 PM
>   > Subject: [oracle_br] Re: Consulta X E-mail
>   > 
>   > 
>   > Pra começo de conversa, primeiro de tudo veja que no banco
Oracle ***
>   > não existe ** uma trigger de SELECT, ie, um
>   > procedimento/programa/rotina/job que seja automaticam,ente disparado
>   > após um SELECT, certo? Aí, pra gente poder sugerir, pergunto,
>   > exatamente PARA QUE vc quer isso ??? É tipo para Auditoria, ie, esse
>   > SELECT traz informações tão altamente sigilosas que a cada vez que
>   > forem consultadas vc quer ter um registro de quem fez isso e quando
>   > ? Se é isso, primeiro de tudo RESTRINJA o acesso, ie : crie
esses
>   > dados num schema cuja senha é tão restrita e controlada quanto a do
>   > DBA , dê GRANT de SELECT desses dados apenas para os poucos
>   > usuários/roles a tal habilitados, talvez até mesmo CRIPTOGRAFANDO
>   > esses dados, cfrme for. Feito isso, vc tem várias opções para
Auditar
>   > que um SELECT foi feito, dependendo da versão do seu banco (o
que pra
>   > variar vc não diz :( , mas podem ser usadas FGA, AUDIT ON SELECT,
>   > strored pl/sql que retorna os dados via pipe ou similares E faz a
>   > Auditoria, entre outras. Uma vez obtida uma fonte de dados de
>   > auditoria, vc TANTO pode ter um job que a cada x minutos a
consulta e
>   > manda e-mail se houve cnsulta desde a última execução do job, ou
pode
>   > usar alguns macetes, tipo trigger na tabela de auditoria (o que
>   > oficialmente não é recomendado mas funciona), function chamada
na FGA
>   > ou na pipe procedure, MV refrescada on commit na auditoria , por
aí...
>   > 
>   > Se não for isso, se não é por Auditoria que vc quer ter isso,
>   > explique melhor a sua necessidade que a gente pode tentar palpitar
>   mais...
>   > 
>   > []s
>   > 
>   > Chiappa
>   > --- Em oracle_br@yahoogrupos.com.br, João Paulo Velame 
>   > escreveu
>   > >
>   > > Bom dia,
>   > > 
>   > > Tenho uma consulta simples e gostaria que toda vez que o resultado
>   > dela for uma linha ou mais seja enviado um e-mail de notificação
pelo
>   > Oracle.
>   > > 
>   > > Alguem tem alguma sugestão?
>   > > 
>   > > Utilizo Oracle 10g
>   > > 
>   > > Grato,
>   > > 
>   > > João Paulo
>   > > 
>   > > [As partes desta mensagem que não continham texto foram removidas]
>   > >
>   > 
>   > 
>   > 
>   > 
>   > 
>   > [As partes desta mensagem que não continham texto foram removidas]
>   >
> 
> 
> 
>
> 
> [As partes desta mensagem que não continham texto foram removidas]
>




Re: [oracle_br] Re: Consulta X E-mail

2008-05-30 Por tôpico João Paulo Velame
O problema é que é um sistema que não tenho acesso a alterar nada.


  - Original Message - 
  From: jlchiappa 
  To: oracle_br@yahoogrupos.com.br 
  Sent: Friday, May 30, 2008 7:18 PM
  Subject: [oracle_br] Re: Consulta X E-mail


  Então, se apenas a tal rotina é que altera o tal campo, adicione nessa
  rotina o envio de e-mail , se a linguagem aonde ela está desenvolvida
  for PL/SQL , use a UTL_SMTP (para banco 9i ou inferior) ou a UTL_MAIL
  se banco 10g. É isso.

  []s

  Chiappa

  --- Em oracle_br@yahoogrupos.com.br, João Paulo Velame <[EMAIL PROTECTED]>
  escreveu
  >
  > Chiappa,
  > 
  > É mais simples.
  > 
  > Tenho uma rotina no sistema que cada vez que acontece um problema na
  exclusão de um registro o sistema altera um campo com valor igual = 2.
  > 
  > O que preciso é que toda vez que select count(*) from tabela where
  status = 2 retornar uma ou mais linhas seja enviado um e-mail.
  > 
  > A versão do BD é 10.2.0.1.0.
  > 
  > Grato, 
  > 
  > João Paulo
  > 
  > 
  > - Original Message - 
  > From: jlchiappa 
  > To: oracle_br@yahoogrupos.com.br 
  > Sent: Thursday, May 29, 2008 10:23 PM
  > Subject: [oracle_br] Re: Consulta X E-mail
  > 
  > 
  > Pra começo de conversa, primeiro de tudo veja que no banco Oracle ***
  > não existe ** uma trigger de SELECT, ie, um
  > procedimento/programa/rotina/job que seja automaticam,ente disparado
  > após um SELECT, certo? Aí, pra gente poder sugerir, pergunto,
  > exatamente PARA QUE vc quer isso ??? É tipo para Auditoria, ie, esse
  > SELECT traz informações tão altamente sigilosas que a cada vez que
  > forem consultadas vc quer ter um registro de quem fez isso e quando
  > ? Se é isso, primeiro de tudo RESTRINJA o acesso, ie : crie esses
  > dados num schema cuja senha é tão restrita e controlada quanto a do
  > DBA , dê GRANT de SELECT desses dados apenas para os poucos
  > usuários/roles a tal habilitados, talvez até mesmo CRIPTOGRAFANDO
  > esses dados, cfrme for. Feito isso, vc tem várias opções para Auditar
  > que um SELECT foi feito, dependendo da versão do seu banco (o que pra
  > variar vc não diz :( , mas podem ser usadas FGA, AUDIT ON SELECT,
  > strored pl/sql que retorna os dados via pipe ou similares E faz a
  > Auditoria, entre outras. Uma vez obtida uma fonte de dados de
  > auditoria, vc TANTO pode ter um job que a cada x minutos a consulta e
  > manda e-mail se houve cnsulta desde a última execução do job, ou pode
  > usar alguns macetes, tipo trigger na tabela de auditoria (o que
  > oficialmente não é recomendado mas funciona), function chamada na FGA
  > ou na pipe procedure, MV refrescada on commit na auditoria , por aí...
  > 
  > Se não for isso, se não é por Auditoria que vc quer ter isso,
  > explique melhor a sua necessidade que a gente pode tentar palpitar
  mais...
  > 
  > []s
  > 
  > Chiappa
  > --- Em oracle_br@yahoogrupos.com.br, João Paulo Velame 
  > escreveu
  > >
  > > Bom dia,
  > > 
  > > Tenho uma consulta simples e gostaria que toda vez que o resultado
  > dela for uma linha ou mais seja enviado um e-mail de notificação pelo
  > Oracle.
  > > 
  > > Alguem tem alguma sugestão?
  > > 
  > > Utilizo Oracle 10g
  > > 
  > > Grato,
  > > 
  > > João Paulo
  > > 
  > > [As partes desta mensagem que não continham texto foram removidas]
  > >
  > 
  > 
  > 
  > 
  > 
  > [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: Consulta X E-mail

2008-05-30 Por tôpico jlchiappa
Então, se apenas a tal rotina é que altera o tal campo, adicione nessa
rotina o envio de e-mail , se a linguagem aonde ela está desenvolvida
for PL/SQL , use a UTL_SMTP (para banco 9i ou inferior) ou a UTL_MAIL
se banco 10g. É isso.

 []s

   Chiappa

--- Em oracle_br@yahoogrupos.com.br, João Paulo Velame <[EMAIL PROTECTED]>
escreveu
>
> Chiappa,
> 
> É mais simples.
> 
> Tenho uma rotina no sistema que cada vez que acontece um problema na
exclusão de um registro o sistema altera um campo com valor igual = 2.
> 
> O que preciso é que toda vez que select count(*) from tabela where
status = 2 retornar uma ou mais linhas seja enviado um e-mail.
> 
> A versão do BD é 10.2.0.1.0.
> 
> Grato, 
> 
> João Paulo
> 
> 
>   - Original Message - 
>   From: jlchiappa 
>   To: oracle_br@yahoogrupos.com.br 
>   Sent: Thursday, May 29, 2008 10:23 PM
>   Subject: [oracle_br] Re: Consulta X E-mail
> 
> 
>   Pra começo de conversa, primeiro de tudo veja que no banco Oracle ***
>   não existe ** uma trigger de SELECT, ie, um
>   procedimento/programa/rotina/job que seja automaticam,ente disparado
>   após um SELECT, certo? Aí, pra gente poder sugerir, pergunto,
>   exatamente PARA QUE vc quer isso ??? É tipo para Auditoria, ie, esse
>   SELECT traz informações tão altamente sigilosas que a cada vez que
>   forem consultadas vc quer ter um registro de quem fez isso e quando
>   ? Se é isso, primeiro de tudo RESTRINJA o acesso, ie : crie esses
>   dados num schema cuja senha é tão restrita e controlada quanto a do
>   DBA , dê GRANT de SELECT desses dados apenas para os poucos
>   usuários/roles a tal habilitados, talvez até mesmo CRIPTOGRAFANDO
>   esses dados, cfrme for. Feito isso, vc tem várias opções para Auditar
>   que um SELECT foi feito, dependendo da versão do seu banco (o que pra
>   variar vc não diz :( , mas podem ser usadas FGA, AUDIT ON SELECT,
>   strored pl/sql que retorna os dados via pipe ou similares E faz a
>   Auditoria, entre outras. Uma vez obtida uma fonte de dados de
>   auditoria, vc TANTO pode ter um job que a cada x minutos a consulta e
>   manda e-mail se houve cnsulta desde a última execução do job, ou pode
>   usar alguns macetes, tipo trigger na tabela de auditoria (o que
>   oficialmente não é recomendado mas funciona), function chamada na FGA
>   ou na pipe procedure, MV refrescada on commit na auditoria , por aí...
> 
>   Se não for isso, se não é por Auditoria que vc quer ter isso,
>   explique melhor a sua necessidade que a gente pode tentar palpitar
mais...
> 
>   []s
> 
>   Chiappa
>   --- Em oracle_br@yahoogrupos.com.br, João Paulo Velame 
>   escreveu
>   >
>   > Bom dia,
>   > 
>   > Tenho uma consulta simples e gostaria que toda vez que o resultado
>   dela for uma linha ou mais seja enviado um e-mail de notificação pelo
>   Oracle.
>   > 
>   > Alguem tem alguma sugestão?
>   > 
>   > Utilizo Oracle 10g
>   > 
>   > Grato,
>   > 
>   > João Paulo
>   > 
>   > [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: Consulta X E-mail

2008-05-30 Por tôpico Alexsandro Haag
Olá, 
  creio que resolveria se fizésse uma trigger after update no campo
status desta tabela que chame sua rotina de envio de e-mail (criada
com a package UTL_SMTP sugerida anteriormente), enviando a notificação
para com este registro. Assim nem precisaria fazer um select count()
from ...

Att.
Alex


--- Em oracle_br@yahoogrupos.com.br, João Paulo Velame <[EMAIL PROTECTED]>
escreveu
>
> Chiappa,
> 
> É mais simples.
> 
> Tenho uma rotina no sistema que cada vez que acontece um problema na
exclusão de um registro o sistema altera um campo com valor igual = 2.
> 
> O que preciso é que toda vez que select count(*) from tabela where
status = 2 retornar uma ou mais linhas seja enviado um e-mail.
> 
> A versão do BD é 10.2.0.1.0.
> 
> Grato, 
> 
> João Paulo
> 
> 
>   - Original Message - 
>   From: jlchiappa 
>   To: oracle_br@yahoogrupos.com.br 
>   Sent: Thursday, May 29, 2008 10:23 PM
>   Subject: [oracle_br] Re: Consulta X E-mail
> 
> 
>   Pra começo de conversa, primeiro de tudo veja que no banco Oracle ***
>   não existe ** uma trigger de SELECT, ie, um
>   procedimento/programa/rotina/job que seja automaticam,ente disparado
>   após um SELECT, certo? Aí, pra gente poder sugerir, pergunto,
>   exatamente PARA QUE vc quer isso ??? É tipo para Auditoria, ie, esse
>   SELECT traz informações tão altamente sigilosas que a cada vez que
>   forem consultadas vc quer ter um registro de quem fez isso e quando
>   ? Se é isso, primeiro de tudo RESTRINJA o acesso, ie : crie esses
>   dados num schema cuja senha é tão restrita e controlada quanto a do
>   DBA , dê GRANT de SELECT desses dados apenas para os poucos
>   usuários/roles a tal habilitados, talvez até mesmo CRIPTOGRAFANDO
>   esses dados, cfrme for. Feito isso, vc tem várias opções para Auditar
>   que um SELECT foi feito, dependendo da versão do seu banco (o que pra
>   variar vc não diz :( , mas podem ser usadas FGA, AUDIT ON SELECT,
>   strored pl/sql que retorna os dados via pipe ou similares E faz a
>   Auditoria, entre outras. Uma vez obtida uma fonte de dados de
>   auditoria, vc TANTO pode ter um job que a cada x minutos a consulta e
>   manda e-mail se houve cnsulta desde a última execução do job, ou pode
>   usar alguns macetes, tipo trigger na tabela de auditoria (o que
>   oficialmente não é recomendado mas funciona), function chamada na FGA
>   ou na pipe procedure, MV refrescada on commit na auditoria , por aí...
> 
>   Se não for isso, se não é por Auditoria que vc quer ter isso,
>   explique melhor a sua necessidade que a gente pode tentar palpitar
mais...
> 
>   []s
> 
>   Chiappa
>   --- Em oracle_br@yahoogrupos.com.br, João Paulo Velame 
>   escreveu
>   >
>   > Bom dia,
>   > 
>   > Tenho uma consulta simples e gostaria que toda vez que o resultado
>   dela for uma linha ou mais seja enviado um e-mail de notificação pelo
>   Oracle.
>   > 
>   > Alguem tem alguma sugestão?
>   > 
>   > Utilizo Oracle 10g
>   > 
>   > Grato,
>   > 
>   > João Paulo
>   > 
>   > [As partes desta mensagem que não continham texto foram removidas]
>   >
> 
> 
> 
>
> 
> [As partes desta mensagem que não continham texto foram removidas]
>




Re: [oracle_br] Re: Consulta X E-mail

2008-05-30 Por tôpico João Paulo Velame
Chiappa,

É mais simples.

Tenho uma rotina no sistema que cada vez que acontece um problema na exclusão 
de um registro o sistema altera um campo com valor igual = 2.

O que preciso é que toda vez que select count(*) from tabela where status = 2 
retornar uma ou mais linhas seja enviado um e-mail.

A versão do BD é 10.2.0.1.0.

Grato, 

João Paulo


  - Original Message - 
  From: jlchiappa 
  To: oracle_br@yahoogrupos.com.br 
  Sent: Thursday, May 29, 2008 10:23 PM
  Subject: [oracle_br] Re: Consulta X E-mail


  Pra começo de conversa, primeiro de tudo veja que no banco Oracle ***
  não existe ** uma trigger de SELECT, ie, um
  procedimento/programa/rotina/job que seja automaticam,ente disparado
  após um SELECT, certo? Aí, pra gente poder sugerir, pergunto,
  exatamente PARA QUE vc quer isso ??? É tipo para Auditoria, ie, esse
  SELECT traz informações tão altamente sigilosas que a cada vez que
  forem consultadas vc quer ter um registro de quem fez isso e quando
  ? Se é isso, primeiro de tudo RESTRINJA o acesso, ie : crie esses
  dados num schema cuja senha é tão restrita e controlada quanto a do
  DBA , dê GRANT de SELECT desses dados apenas para os poucos
  usuários/roles a tal habilitados, talvez até mesmo CRIPTOGRAFANDO
  esses dados, cfrme for. Feito isso, vc tem várias opções para Auditar
  que um SELECT foi feito, dependendo da versão do seu banco (o que pra
  variar vc não diz :( , mas podem ser usadas FGA, AUDIT ON SELECT,
  strored pl/sql que retorna os dados via pipe ou similares E faz a
  Auditoria, entre outras. Uma vez obtida uma fonte de dados de
  auditoria, vc TANTO pode ter um job que a cada x minutos a consulta e
  manda e-mail se houve cnsulta desde a última execução do job, ou pode
  usar alguns macetes, tipo trigger na tabela de auditoria (o que
  oficialmente não é recomendado mas funciona), function chamada na FGA
  ou na pipe procedure, MV refrescada on commit na auditoria , por aí...

  Se não for isso, se não é por Auditoria que vc quer ter isso,
  explique melhor a sua necessidade que a gente pode tentar palpitar mais...

  []s

  Chiappa
  --- Em oracle_br@yahoogrupos.com.br, João Paulo Velame <[EMAIL PROTECTED]>
  escreveu
  >
  > Bom dia,
  > 
  > Tenho uma consulta simples e gostaria que toda vez que o resultado
  dela for uma linha ou mais seja enviado um e-mail de notificação pelo
  Oracle.
  > 
  > Alguem tem alguma sugestão?
  > 
  > Utilizo Oracle 10g
  > 
  > Grato,
  > 
  > João Paulo
  > 
  > [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: Consulta X E-mail

2008-05-29 Por tôpico jlchiappa
Pra começo de conversa, primeiro de tudo veja que no banco Oracle ***
não existe ** uma trigger de SELECT, ie, um
procedimento/programa/rotina/job que seja automaticam,ente disparado
após um SELECT, certo? Aí, pra gente poder sugerir, pergunto,
exatamente PARA QUE vc quer isso ??? É tipo para Auditoria, ie, esse
SELECT traz informações tão altamente sigilosas que a cada vez que
forem consultadas vc quer ter um registro de quem fez isso e quando
? Se é isso, primeiro de tudo RESTRINJA o acesso, ie : crie esses
dados num schema cuja senha é tão restrita e controlada quanto a do
DBA , dê GRANT de SELECT desses dados apenas para os poucos
usuários/roles a tal habilitados, talvez até mesmo CRIPTOGRAFANDO
esses dados, cfrme for. Feito isso, vc tem várias opções para Auditar
que um SELECT foi feito, dependendo da versão do seu banco (o que pra
variar vc não diz :( , mas podem ser usadas FGA, AUDIT ON SELECT,
strored pl/sql que retorna os dados via pipe ou similares E faz a
Auditoria, entre outras. Uma vez obtida uma fonte de dados de
auditoria, vc TANTO pode ter um job que a cada x minutos a consulta e
manda e-mail se houve cnsulta desde a última execução do job, ou pode
usar alguns macetes, tipo trigger na tabela de auditoria (o que
oficialmente não é recomendado mas funciona), function chamada na FGA
ou na pipe procedure, MV refrescada on commit na auditoria , por aí...

 Se não for isso, se não é por Auditoria que vc quer ter isso,
explique melhor a sua necessidade que a gente pode tentar palpitar mais...

[]s

 Chiappa
--- Em oracle_br@yahoogrupos.com.br, João Paulo Velame <[EMAIL PROTECTED]>
escreveu
>
> Bom dia,
> 
> Tenho uma consulta simples e gostaria que toda vez que o resultado
dela for uma linha ou mais seja enviado um e-mail de notificação pelo
Oracle.
> 
> Alguem tem alguma sugestão?
> 
> Utilizo Oracle 10g
> 
> Grato,
> 
> João Paulo
> 
> [As partes desta mensagem que não continham texto foram removidas]
>




[oracle_br] Re: Consulta SQL

2008-01-31 Por tôpico zidvlauns
Se entendi direito o que vc quer fazer a resposta seria algo assim:
SELECT P.ID_PLANO,COUNT(U.ID_USUARIO) FROM USUARIO U, PLANOS_CONTRATO
PC, PLANOS P WHERE PC.ID_PLANO_CONTRATO=U.ID_PLANO_CONTRATO AND
PC.ID_PLANO=P.ID_PLANO GROUP BY P.ID_PLANO


--- Em oracle_br@yahoogrupos.com.br, "Haroldo Gondim Torres Filho"
<[EMAIL PROTECTED]> escreveu
>
> Olá pessoal, sou novo aqui no grupo
> 
> alguém poderia me ajudar a fazer uma consulta
> 
> a estrutura e mais ou menos assim
> 
> tabela usuario [id_usuario, id_plano_contrato]
> tabela planos_contrato [plano_contrato, id_plano]
> tabela planos[id_plano, descricao]
> 
> possui outros atributos, + acho que não influenciem
> 
> 
> o que eu preciso é a quantidade de usuários por plano
>




[oracle_br] Re: Consulta SQL

2008-01-31 Por tôpico rei_do_delphi
Haroldo, ficaria assim:

select count(u.id_usuario),p.id_plano from usuario u inner join  
planos_contrato pc on 
 (u.plano_contrato=pc.plano_contrato) inner join planos p on
 (pc.id_plano=p.plano)
group by p.plano

no caso acima, estamos utilizando inner join, pois queremos apeas 
usuários com plano ok? Espero ter ajudado :)



--- Em oracle_br@yahoogrupos.com.br, "Haroldo Gondim Torres Filho" 
<[EMAIL PROTECTED]> escreveu
>
> Olá pessoal, sou novo aqui no grupo
> 
> alguém poderia me ajudar a fazer uma consulta
> 
> a estrutura e mais ou menos assim
> 
> tabela usuario [id_usuario, id_plano_contrato]
> tabela planos_contrato [plano_contrato, id_plano]
> tabela planos[id_plano, descricao]
> 
> possui outros atributos, + acho que não influenciem
> 
> 
> o que eu preciso é a quantidade de usuários por plano
>




Re: [oracle_br] Re: Consulta com campos opcionais

2007-10-29 Por tôpico andreluis


Outra forma. O codigo fica menor e acho mais facil de ler 

  select * from tabela
  where matricula = 
NVL(:v_matricula, matricula)
  and cpf = NVL(:v_cpf , cpf);


-> Vc pd tb fazer dessa forma Paulo, utilizo muito e
funciona muito bem..
 -> 
 -> select * from tabela

-> where (matricula = :v_matricula or matricula is null)
 ->
and (cpf = :v_cpf or cpf is null);
 -> 
 -> --- Em
oracle_br@yahoogrupos.com.br, "Milton Bastos Henriquis Jr."
 -> <[EMAIL PROTECTED]> escreveu
 ->>
 ->>
Use o decode...
 ->>
 ->> Mais ou menos assim:

->>
 ->> select * from tabela
 ->> where
matricula = decode(:v_matricula, null, matricula, :v_matricula)

->> and cpf = decode(:v_cpf, null, cpf, :v_cpf);
 ->>
 ->> Onde matricula e cpf são os nomes dos campos,

->> e :v_matricula e :v_cpf são as variáveis com os
valores que o
 ->> usuário digitou.
 ->>
 ->> Não lembro se a sintaxe está correta, mas
testando vc já descobre...
 ->>
 ->>
1000tão
 ->>
 ->>
 ->> On
10/25/07, netto.paulo <[EMAIL PROTECTED]> wrote:
 ->>
>
 ->> >   Pessoal,
 ->> > Estou precisando
de uma ajuda bem básica.
 ->> > Preciso fazer uma
busca em que o usuário digita a matrícula do
 ->>
> funcionário ou o cpf.
 ->> > Sei que há
uma maneira de escrever a query de uma só vez, sem precisar

->> > verificar qual foi digitado para monta-la (utilizando
IF).
 ->> > Alguém pode me ajudar?
 ->>
> Muito obrigado.
 ->> > Paulo.
 ->> >
 ->> >
 ->> >
 ->>
 ->>
 ->> [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: Consulta com campos opcionais

2007-10-29 Por tôpico jcthebrother
Vc pd tb fazer dessa forma Paulo, utilizo muito e funciona muito bem.. 

select * from tabela
where (matricula = :v_matricula or matricula is null)
and (cpf = :v_cpf or cpf is null);

--- Em oracle_br@yahoogrupos.com.br, "Milton Bastos Henriquis Jr."
<[EMAIL PROTECTED]> escreveu
>
> Use o decode...
> 
> Mais ou menos assim:
> 
> select * from tabela
> where matricula = decode(:v_matricula, null, matricula, :v_matricula)
> and cpf = decode(:v_cpf, null, cpf, :v_cpf);
> 
> Onde matricula e cpf são os nomes dos campos,
> e :v_matricula e :v_cpf são as variáveis com os valores que o
> usuário digitou.
> 
> Não lembro se a sintaxe está correta, mas testando vc já descobre...
> 
> 1000tão
> 
> 
> On 10/25/07, netto.paulo <[EMAIL PROTECTED]> wrote:
> >
> >   Pessoal,
> > Estou precisando de uma ajuda bem básica.
> > Preciso fazer uma busca em que o usuário digita a matrícula do
> > funcionário ou o cpf.
> > Sei que há uma maneira de escrever a query de uma só vez, sem precisar
> > verificar qual foi digitado para monta-la (utilizando IF).
> > Alguém pode me ajudar?
> > Muito obrigado.
> > Paulo.
> >
> >  
> >
> 
> 
> [As partes desta mensagem que não continham texto foram removidas]
>




[oracle_br] Re: Consulta Hierarquica

2007-02-16 Por tôpico schmittfilho
Marco,

Ja encaminhei a estrutura pro seu email e fico no aguardo...

Abraços
--- Em oracle_br@yahoogrupos.com.br, "FERNANDES Marco ASOFTTEK" 
<[EMAIL PROTECTED]> escreveu
>
> Bruno,
> se vc puder me mandar o que vc tem em mãos aí...
>  
> precisaria da estrutura das 3 tabelas do seu join
> alguns dados de teste, e o seu SQL.
>  
> Deve ser coisa boba mas sem isso fica complicado
> ver onde está o problema eu sei que o uso
> do connect by e start with tem umas limitações
> com relação à joins, subqueries mas no seu
> caso parece ser possível sim.
>  
> abraço,
> Marco.
> 
> 
> 
> From: oracle_br@yahoogrupos.com.br 
[mailto:[EMAIL PROTECTED] On Behalf Of PUB: schmittfilho
> Sent: sexta-feira, 16 de fevereiro de 2007 10:52
> To: oracle_br@yahoogrupos.com.br
> Subject: [oracle_br] Re: Consulta Hierarquica
> 
> 
> 
> Oi Marco,
> 
> Não consegui solucionar o problema ainda...
> 
> Os resultados estão saindo assim:
> 
> 1 - Despesas Gerais... R$ 0,00
> 1.1 - Despesas de Pessoal. R$ 0,00
> 1.1.1 - Horas Consultoria. R$ 4.000,00
> 1.1.2 - Horas Treinamento. R$ 4.000,00
> 1.2 - Despesas Material... R$ 0,00
> 1.2.1 - Papel. R$ 3.000,00
> 1.2.2 - Xerox. R$ 4.000,00
> 
> A listagem traz a hierarquia da rubrica correta, mas na hora dos 
> somatórios que acumulam as rubricas do nivel mais baixo ele não 
> consegue resolver.
> 
> Tens mais algum recurso?
> 
> Bruno
> 
> --- Em oracle_br@yahoogrupos.com.br <mailto:oracle_br%
40yahoogrupos.com.br> , "FERNANDES Marco A SOFTTEK" 
>  escreveu
> >
> > Segue alguns exemplo simples do que passei:
> > http://www.adp-gmbh.ch/ora/sql/connect_by.html <http://www.adp-
gmbh.ch/ora/sql/connect_by.html> 
> > http://www.psoug.org/reference/connectby.html 
<http://www.psoug.org/reference/connectby.html> 
> > http://philip.greenspun.com/sql/trees.html 
<http://philip.greenspun.com/sql/trees.html> 
> > 
> > Abraço,
> > Marco.
> > 
> > 
> > 
> > From: oracle_br@yahoogrupos.com.br <mailto:oracle_br%
40yahoogrupos.com.br>  
> [mailto:oracle_br@yahoogrupos.com.br <mailto:oracle_br%
40yahoogrupos.com.br> ] On Behalf Of PUB: FERNANDES 
> Marco A SOFTTEK
> > Sent: sexta-feira, 16 de fevereiro de 2007 09:46
> > To: oracle_br@yahoogrupos.com.br <mailto:oracle_br%
40yahoogrupos.com.br> 
> > Subject: RE: [oracle_br] Consulta Hierarquica
> > 
> > 
> > 
> > Bruno,
> > existe um recurso no Oracle para fazer isso.
> > 
> > Segue trecho do manual para sua consulta.
> > 
> > LEVEL
> > You use LEVEL with the SELECT CONNECT BY statement to organize 
> rows from a database table into a tree structure. LEVEL returns 
the 
> level number of a node in a tree structure. The root is level 1, 
> children of the root are level 2, grandchildren are level 3, and 
so 
> on. 
> > 
> > You specify the direction in which the query walks the tree 
(down 
> from the root or up from the branches) with the PRIOR operator. In 
> the START WITH clause, you specify a condition that identifies the 
> root of the tree. 
> > 
> > Qualquer dúvida é só mandar !
> > 
> > Abraço,
> > Marco.
> > 
> > 
> > 
> > From: oracle_br@yahoogrupos.com.br <mailto:oracle_br%
40yahoogrupos.com.br>  <mailto:oracle_br%
> 40yahoogrupos.com.br> [mailto:oracle_br@yahoogrupos.com.br 
<mailto:oracle_br%40yahoogrupos.com.br>  
> <mailto:oracle_br%40yahoogrupos.com.br> ] On Behalf Of PUB: 
> schmittfilho
> > Sent: sexta-feira, 16 de fevereiro de 2007 09:30
> > To: oracle_br@yahoogrupos.com.br <mailto:oracle_br%
40yahoogrupos.com.br>  <mailto:oracle_br%
> 40yahoogrupos.com.br> 
> > Subject: [oracle_br] Consulta Hierarquica
> > 
> > Ola Amigos,
> > 
> > Preciso de uma dica de consulta hierarquica e gostaria de ver se 
> > vocês podem me ajudar no uso desse recurso. Vou explicar a 
> situação:
> > Tenho 03 tabelas que devem me retornar um plano de orçamento por 
> > rubricas da seguinte maneira:
> > Projeto: Projeto Teste
> > 1 - Despesas Gerais. R$ 15.000,00
> > 1.1 - Despesas de Pessoal.. R$ 8.000,00
> > 1.1.1 - Horas Consultoria. R$ 4.000,00
> > 1.1.2 - Horas Treinamento. R$ 4.000,00
> > 1.2 - Despesas Material R$ 7.000,00
> > 1.2.1 - Papel. R$ 3.000,00
> > 1.2.2 - Xerox

RE: [oracle_br] Re: Consulta Hierarquica

2007-02-16 Por tôpico FERNANDES Marco A SOFTTEK
Bruno,
se vc puder me mandar o que vc tem em mãos aí...
 
precisaria da estrutura das 3 tabelas do seu join
alguns dados de teste, e o seu SQL.
 
Deve ser coisa boba mas sem isso fica complicado
ver onde está o problema eu sei que o uso
do connect by e start with tem umas limitações
com relação à joins, subqueries mas no seu
caso parece ser possível sim.
 
abraço,
Marco.



From: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] On Behalf Of PUB: 
schmittfilho
Sent: sexta-feira, 16 de fevereiro de 2007 10:52
To: oracle_br@yahoogrupos.com.br
Subject: [oracle_br] Re: Consulta Hierarquica



Oi Marco,

Não consegui solucionar o problema ainda...

Os resultados estão saindo assim:

1 - Despesas Gerais... R$ 0,00
1.1 - Despesas de Pessoal. R$ 0,00
1.1.1 - Horas Consultoria. R$ 4.000,00
1.1.2 - Horas Treinamento. R$ 4.000,00
1.2 - Despesas Material... R$ 0,00
1.2.1 - Papel. R$ 3.000,00
1.2.2 - Xerox. R$ 4.000,00

A listagem traz a hierarquia da rubrica correta, mas na hora dos 
somatórios que acumulam as rubricas do nivel mais baixo ele não 
consegue resolver.

Tens mais algum recurso?

Bruno

--- Em oracle_br@yahoogrupos.com.br <mailto:oracle_br%40yahoogrupos.com.br> , 
"FERNANDES Marco A SOFTTEK" 
<[EMAIL PROTECTED]> escreveu
>
> Segue alguns exemplo simples do que passei:
> http://www.adp-gmbh.ch/ora/sql/connect_by.html 
> <http://www.adp-gmbh.ch/ora/sql/connect_by.html> 
> http://www.psoug.org/reference/connectby.html 
> <http://www.psoug.org/reference/connectby.html> 
> http://philip.greenspun.com/sql/trees.html 
> <http://philip.greenspun.com/sql/trees.html> 
> 
> Abraço,
> Marco.
> 
> 
> 
> From: oracle_br@yahoogrupos.com.br <mailto:oracle_br%40yahoogrupos.com.br>  
[mailto:oracle_br@yahoogrupos.com.br <mailto:oracle_br%40yahoogrupos.com.br> ] 
On Behalf Of PUB: FERNANDES 
Marco A SOFTTEK
> Sent: sexta-feira, 16 de fevereiro de 2007 09:46
> To: oracle_br@yahoogrupos.com.br <mailto:oracle_br%40yahoogrupos.com.br> 
> Subject: RE: [oracle_br] Consulta Hierarquica
> 
> 
> 
> Bruno,
> existe um recurso no Oracle para fazer isso.
> 
> Segue trecho do manual para sua consulta.
> 
> LEVEL
> You use LEVEL with the SELECT CONNECT BY statement to organize 
rows from a database table into a tree structure. LEVEL returns the 
level number of a node in a tree structure. The root is level 1, 
children of the root are level 2, grandchildren are level 3, and so 
on. 
> 
> You specify the direction in which the query walks the tree (down 
from the root or up from the branches) with the PRIOR operator. In 
the START WITH clause, you specify a condition that identifies the 
root of the tree. 
> 
> Qualquer dúvida é só mandar !
> 
> Abraço,
> Marco.
> 
> 
> 
> From: oracle_br@yahoogrupos.com.br <mailto:oracle_br%40yahoogrupos.com.br>  
> <mailto:oracle_br%
40yahoogrupos.com.br> [mailto:oracle_br@yahoogrupos.com.br 
<mailto:oracle_br%40yahoogrupos.com.br>  
<mailto:oracle_br%40yahoogrupos.com.br> ] On Behalf Of PUB: 
schmittfilho
> Sent: sexta-feira, 16 de fevereiro de 2007 09:30
> To: oracle_br@yahoogrupos.com.br <mailto:oracle_br%40yahoogrupos.com.br>  
> <mailto:oracle_br%
40yahoogrupos.com.br> 
> Subject: [oracle_br] Consulta Hierarquica
> 
> Ola Amigos,
> 
> Preciso de uma dica de consulta hierarquica e gostaria de ver se 
> vocês podem me ajudar no uso desse recurso. Vou explicar a 
situação:
> Tenho 03 tabelas que devem me retornar um plano de orçamento por 
> rubricas da seguinte maneira:
> Projeto: Projeto Teste
> 1 - Despesas Gerais. R$ 15.000,00
> 1.1 - Despesas de Pessoal.. R$ 8.000,00
> 1.1.1 - Horas Consultoria. R$ 4.000,00
> 1.1.2 - Horas Treinamento. R$ 4.000,00
> 1.2 - Despesas Material R$ 7.000,00
> 1.2.1 - Papel. R$ 3.000,00
> 1.2.2 - Xerox. R$ 4.000,00
> 
> Eu uso uma tabela que possui as rubricas e um auto-relacionamento 
> para montar a hierarquia entre eles. Outra tabela tem os codigos 
dos 
> projetos e a outra eh a associacao entre as rubricas e os 
projetos, 
> onde consta também o valor. Nessa tabela associacao guardo apenas 
o 
> ultimo nível das rubricas.
> 
> Tem como fazer via SQL esse resultado?
> 
> Desde ja agradeço a colaboração.
> 
> Bruno
> 
> [As partes desta mensagem que não continham texto foram removidas]
> 
> 
> 
> 
> 
> 
> [As partes desta mensagem que não continham texto foram removidas]
>



 


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



Re: [oracle_br] Re: Consulta Hierarquica

2007-02-16 Por tôpico Marcio Portes
Bruno, já tentou uma subquery escalar para totalizar o elemento?

select level nivel
 , lpad('',level*2) || o.eledes elemento
 , ( subquery escalar totalizando o elemento ) valor
  from elemento o
 , (select el.elecod elem
 , po.orcprjvlr valor
  from elemento el
 , projeto pr
 , prjorcam po
 where el.elecod = po.elecod
   and pr.prjcod = po.prjcod
  ) proj
  where o.elecod = elem (+)
  start with o.elecodsup is null
connect by prior o.elecod = o.elecodsup


On 2/16/07, schmittfilho <[EMAIL PROTECTED]> wrote:
>
>   Oi Marco,
>
> Não consegui solucionar o problema ainda...
>
> Os resultados estão saindo assim:
>
> 1 - Despesas Gerais... R$ 0,00
> 1.1 - Despesas de Pessoal. R$ 0,00
> 1.1.1 - Horas Consultoria. R$ 4.000,00
> 1.1.2 - Horas Treinamento. R$ 4.000,00
> 1.2 - Despesas Material... R$ 0,00
> 1.2.1 - Papel. R$ 3.000,00
> 1.2.2 - Xerox. R$ 4.000,00
>
> A listagem traz a hierarquia da rubrica correta, mas na hora dos
> somatórios que acumulam as rubricas do nivel mais baixo ele não
> consegue resolver.
>
> Tens mais algum recurso?
>
> Bruno
>
> --- Em oracle_br@yahoogrupos.com.br ,
> "FERNANDES Marco A SOFTTEK"
> <[EMAIL PROTECTED]> escreveu
> >
> > Segue alguns exemplo simples do que passei:
> > http://www.adp-gmbh.ch/ora/sql/connect_by.html
> > http://www.psoug.org/reference/connectby.html
> > http://philip.greenspun.com/sql/trees.html
> >
> > Abraço,
> > Marco.
> >
> > 
> >
> > From: oracle_br@yahoogrupos.com.br 
> [mailto:oracle_br@yahoogrupos.com.br ] On
> Behalf Of PUB: FERNANDES
> Marco A SOFTTEK
> > Sent: sexta-feira, 16 de fevereiro de 2007 09:46
> > To: oracle_br@yahoogrupos.com.br 
> > Subject: RE: [oracle_br] Consulta Hierarquica
> >
> >
> >
> > Bruno,
> > existe um recurso no Oracle para fazer isso.
> >
> > Segue trecho do manual para sua consulta.
> >
> > LEVEL
> > You use LEVEL with the SELECT CONNECT BY statement to organize
> rows from a database table into a tree structure. LEVEL returns the
> level number of a node in a tree structure. The root is level 1,
> children of the root are level 2, grandchildren are level 3, and so
> on.
> >
> > You specify the direction in which the query walks the tree (down
> from the root or up from the branches) with the PRIOR operator. In
> the START WITH clause, you specify a condition that identifies the
> root of the tree.
> >
> > Qualquer dúvida é só mandar !
> >
> > Abraço,
> > Marco.
> >
> > 
> >
> > From: oracle_br@yahoogrupos.com.br  oracle_br%
> 40yahoogrupos.com.br> 
> [mailto:oracle_br@yahoogrupos.com.br
>  ] On Behalf Of PUB:
> schmittfilho
> > Sent: sexta-feira, 16 de fevereiro de 2007 09:30
> > To: oracle_br@yahoogrupos.com.br  oracle_br%
> 40yahoogrupos.com.br>
> > Subject: [oracle_br] Consulta Hierarquica
> >
> > Ola Amigos,
> >
> > Preciso de uma dica de consulta hierarquica e gostaria de ver se
> > vocês podem me ajudar no uso desse recurso. Vou explicar a
> situação:
> > Tenho 03 tabelas que devem me retornar um plano de orçamento por
> > rubricas da seguinte maneira:
> > Projeto: Projeto Teste
> > 1 - Despesas Gerais. R$ 15.000,00
> > 1.1 - Despesas de Pessoal.. R$ 8.000,00
> > 1.1.1 - Horas Consultoria. R$ 4.000,00
> > 1.1.2 - Horas Treinamento. R$ 4.000,00
> > 1.2 - Despesas Material R$ 7.000,00
> > 1.2.1 - Papel. R$ 3.000,00
> > 1.2.2 - Xerox. R$ 4.000,00
> >
> > Eu uso uma tabela que possui as rubricas e um auto-relacionamento
> > para montar a hierarquia entre eles. Outra tabela tem os codigos
> dos
> > projetos e a outra eh a associacao entre as rubricas e os
> projetos,
> > onde consta também o valor. Nessa tabela associacao guardo apenas
> o
> > ultimo nível das rubricas.
> >
> > Tem como fazer via SQL esse resultado?
> >
> > Desde ja agradeço a colaboração.
> >
> > Bruno
> >
> > [As partes desta mensagem que não continham texto foram removidas]
> >
> >
> >
> >
> >
> >
> > [As partes desta mensagem que não continham texto foram removidas]
> >
>
>  
>



-- 
Marcio Portes
Material Tecnico em Portugues - http://mportes.blogspot.com
Practical Learning Oracle -
http://mportes.blogspot.com/2006/02/practical-learning-oracle.html


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



[oracle_br] Re: Consulta Hierarquica

2007-02-16 Por tôpico schmittfilho
Oi Marco,

Não consegui solucionar o problema ainda...

Os resultados estão saindo assim:

 1 - Despesas Gerais... R$ 0,00
 1.1 - Despesas de Pessoal. R$ 0,00
 1.1.1 - Horas Consultoria. R$ 4.000,00
 1.1.2 - Horas Treinamento. R$ 4.000,00
 1.2 - Despesas Material... R$ 0,00
 1.2.1 - Papel. R$ 3.000,00
 1.2.2 - Xerox. R$ 4.000,00

A listagem traz a hierarquia da rubrica correta, mas na hora dos 
somatórios que acumulam as rubricas do nivel mais baixo ele não 
consegue resolver.

Tens mais algum recurso?

Bruno

--- Em oracle_br@yahoogrupos.com.br, "FERNANDES Marco ASOFTTEK" 
<[EMAIL PROTECTED]> escreveu
>
> Segue alguns exemplo simples do que passei:
> http://www.adp-gmbh.ch/ora/sql/connect_by.html
> http://www.psoug.org/reference/connectby.html
> http://philip.greenspun.com/sql/trees.html
>  
> Abraço,
> Marco.
> 
> 
> 
> From: oracle_br@yahoogrupos.com.br 
[mailto:[EMAIL PROTECTED] On Behalf Of PUB: FERNANDES 
Marco A SOFTTEK
> Sent: sexta-feira, 16 de fevereiro de 2007 09:46
> To: oracle_br@yahoogrupos.com.br
> Subject: RE: [oracle_br] Consulta Hierarquica
> 
> 
> 
> Bruno,
> existe um recurso no Oracle para fazer isso.
> 
> Segue trecho do manual para sua consulta.
> 
> LEVEL
> You use LEVEL with the SELECT CONNECT BY statement to organize 
rows from a database table into a tree structure. LEVEL returns the 
level number of a node in a tree structure. The root is level 1, 
children of the root are level 2, grandchildren are level 3, and so 
on. 
> 
> You specify the direction in which the query walks the tree (down 
from the root or up from the branches) with the PRIOR operator. In 
the START WITH clause, you specify a condition that identifies the 
root of the tree. 
> 
> Qualquer dúvida é só mandar !
> 
> Abraço,
> Marco.
> 
> 
> 
> From: oracle_br@yahoogrupos.com.br   [mailto:oracle_br@yahoogrupos.com.br 
 ] On Behalf Of PUB: 
schmittfilho
> Sent: sexta-feira, 16 de fevereiro de 2007 09:30
> To: oracle_br@yahoogrupos.com.br  
> Subject: [oracle_br] Consulta Hierarquica
> 
> Ola Amigos,
> 
> Preciso de uma dica de consulta hierarquica e gostaria de ver se 
> vocês podem me ajudar no uso desse recurso. Vou explicar a 
situação:
> Tenho 03 tabelas que devem me retornar um plano de orçamento por 
> rubricas da seguinte maneira:
> Projeto: Projeto Teste
> 1 - Despesas Gerais. R$ 15.000,00
> 1.1 - Despesas de Pessoal.. R$ 8.000,00
> 1.1.1 - Horas Consultoria. R$ 4.000,00
> 1.1.2 - Horas Treinamento. R$ 4.000,00
> 1.2 - Despesas Material R$ 7.000,00
> 1.2.1 - Papel. R$ 3.000,00
> 1.2.2 - Xerox. R$ 4.000,00
> 
> Eu uso uma tabela que possui as rubricas e um auto-relacionamento 
> para montar a hierarquia entre eles. Outra tabela tem os codigos 
dos 
> projetos e a outra eh a associacao entre as rubricas e os 
projetos, 
> onde consta também o valor. Nessa tabela associacao guardo apenas 
o 
> ultimo nível das rubricas.
> 
> Tem como fazer via SQL esse resultado?
> 
> Desde ja agradeço a colaboração.
> 
> Bruno
> 
> [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: Consulta Hierarquica

2007-02-16 Por tôpico schmittfilho
Marco,

Já estou usando o level e a consulta ta funcionando parcialmente, 
apenas não consigo somar os valores nos niveis superiores... Segue o 
select que estou fazendo:

  select level nivel
,lpad('',level*2) || o.eledes elemento
,nvl(valor,0) valor
from elemento o
,(select el.elecod elem
,po.orcprjvlr valor
from elemento el
,projeto pr
,prjorcam po
  where el.elecod = po.elecod
and pr.prjcod = po.prjcod) proj
   where o.elecod = elem (+)
  start with o.elecodsup is null
connect by prior o.elecod = o.elecodsup

No ultimo nivel consigo os valores, mas nos superiores ta saindo 
zero...

Se puderes me ajudar, agradeço...

Bruno

--- Em oracle_br@yahoogrupos.com.br, "FERNANDES Marco ASOFTTEK" 
<[EMAIL PROTECTED]> escreveu
>
> Bruno,
> existe um recurso no Oracle para fazer isso.
>  
> Segue trecho do manual para sua consulta.
>  
> LEVEL
> You use LEVEL with the SELECT CONNECT BY statement to organize 
rows from a database table into a tree structure. LEVEL returns the 
level number of a node in a tree structure. The root is level 1, 
children of the root are level 2, grandchildren are level 3, and so 
on. 
>  
> You specify the direction in which the query walks the tree (down 
from the root or up from the branches) with the PRIOR operator. In 
the START WITH clause, you specify a condition that identifies the 
root of the tree. 
> 
> Qualquer dúvida é só mandar !
>  
> Abraço,
> Marco.
> 
>  
> 
> 
> From: oracle_br@yahoogrupos.com.br 
[mailto:[EMAIL PROTECTED] On Behalf Of PUB: schmittfilho
> Sent: sexta-feira, 16 de fevereiro de 2007 09:30
> To: oracle_br@yahoogrupos.com.br
> Subject: [oracle_br] Consulta Hierarquica
> 
> 
> 
> Ola Amigos,
> 
> Preciso de uma dica de consulta hierarquica e gostaria de ver se 
> vocês podem me ajudar no uso desse recurso. Vou explicar a 
situação:
> Tenho 03 tabelas que devem me retornar um plano de orçamento por 
> rubricas da seguinte maneira:
> Projeto: Projeto Teste
> 1 - Despesas Gerais. R$ 15.000,00
> 1.1 - Despesas de Pessoal.. R$ 8.000,00
> 1.1.1 - Horas Consultoria. R$ 4.000,00
> 1.1.2 - Horas Treinamento. R$ 4.000,00
> 1.2 - Despesas Material R$ 7.000,00
> 1.2.1 - Papel. R$ 3.000,00
> 1.2.2 - Xerox. R$ 4.000,00
> 
> Eu uso uma tabela que possui as rubricas e um auto-relacionamento 
> para montar a hierarquia entre eles. Outra tabela tem os codigos 
dos 
> projetos e a outra eh a associacao entre as rubricas e os 
projetos, 
> onde consta também o valor. Nessa tabela associacao guardo apenas 
o 
> ultimo nível das rubricas.
> 
> Tem como fazer via SQL esse resultado?
> 
> Desde ja agradeço a colaboração.
> 
> Bruno
> 
> 
> 
>  
> 
> 
> [As partes desta mensagem que não continham texto foram removidas]
>




Re: [oracle_br] Re: Consulta

2007-01-04 Por tôpico Bruno Coutinho
Amigos,

Muito obrigado pela ajuda, e desculpe pelo erro ao digitar minha pergunta.
Mas consegui resolver o problema, pois eu esta usando somente um campo
UNIQUE, mas no senário existente eu precisei colocar uma chave composta e
assim solucionou o problema.

Abraço,


Em 27/12/06, aaraoandrade <[EMAIL PROTECTED]> escreveu:
>
>   Boa tarde Bruno,
>
> Provavelmente existe algum cliente na tabela3 que está com
> telefone diferente do JOIN (1 e 2). Por isso ele é retornado e não
> consegue ser inserido.
>
> Espero ter ajudado.
>
> Frederico Aarão Andrade
> OCA - Oracle Certified Associate 9i
>
> --- Em oracle_br@yahoogrupos.com.br ,
> "Bruno Coutinho" <[EMAIL PROTECTED]>
> escreveu
> >
> > Boa tarde,
> >
> > Caros, estou com o seguinte problema. Eu preciso buscar todos os
> > telefones que não na tabela3 e estão no resultado da primeira
> > consulta, esta seria a única forma?
> >
> > Pois depois de rodar esta consulta e pego o resultado e insiro na
> > tabela3 para que fique com os mesmo registros, porém o campo
> telefone
> > coloquei como UNIQUE e quando rodo a Procedure apresenta o
> seguinte
> > erro:
> >
> > [1]: (Error): ORA-1: unique constraint (USUARIO.TABELA3)
> violated
> > ORA-06512: at line 35
> >
> > Desde já agradeço.
> >
> > SELECT a.telefone, b.cod_cliente
> > FROM tabela1 a,
> > tabela2 b
> > WHERE a.cod_cliente = b.cod_cliente
> >
> > MINUS
> >
> > SELECT telefone, cod_cliente
> > FROM tabela3
> >
>
> 
>


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



[oracle_br] Re: Consulta

2007-01-02 Por tôpico aaraoandrade
Boa tarde Bruno,

   Provavelmente existe algum cliente na tabela3 que está com 
telefone diferente do JOIN (1 e 2). Por isso ele é retornado e não 
consegue ser inserido.

Espero ter ajudado.

Frederico Aarão Andrade
OCA - Oracle Certified Associate 9i


--- Em oracle_br@yahoogrupos.com.br, "Bruno Coutinho" <[EMAIL PROTECTED]> 
escreveu
>
> Boa tarde,
> 
>  Caros, estou com o seguinte problema. Eu preciso buscar todos os 
> telefones que não na tabela3 e estão no resultado da primeira 
> consulta, esta seria a única forma?
> 
> Pois depois de rodar esta consulta e pego o resultado e insiro na 
> tabela3 para que fique com os mesmo registros, porém o campo 
telefone 
> coloquei como UNIQUE e quando rodo a Procedure apresenta o 
seguinte 
> erro: 
> 
> [1]: (Error): ORA-1: unique constraint (USUARIO.TABELA3) 
violated 
> ORA-06512: at line 35
> 
> Desde já agradeço.
> 
> SELECT a.telefone, b.cod_cliente
> FROM   tabela1 a,
>tabela2 b
> WHERE a.cod_cliente = b.cod_cliente
> 
> MINUS
> 
> SELECT telefone, cod_cliente
> FROM   tabela3
>




[oracle_br] Re: Consulta

2006-12-28 Por tôpico aaraoandrade
Bruno,

   Respondendo novamente eu não tinha visto que seu telefone é 
unique. O que pode ser então é que o vc tem clientes diferentes com 
o mesmo telefone e por isso ele não permite inserir na tabela3.

Exemplo:

Tabela 1 e 2

cod_cliente   tel
1 32232323   not null
2 32232323

Tabela 3
3 32232323


Nesse caso a consulta ira retornar clientes 1 e 2 e não conseguirá 
inserir na 3.


Frederico Aarão Andrade




--- Em oracle_br@yahoogrupos.com.br, "Bruno Coutinho" <[EMAIL PROTECTED]> 
escreveu
>
> Boa tarde,
> 
>  Caros, estou com o seguinte problema. Eu preciso buscar todos os 
> telefones que não na tabela3 e estão no resultado da primeira 
> consulta, esta seria a única forma?
> 
> Pois depois de rodar esta consulta e pego o resultado e insiro na 
> tabela3 para que fique com os mesmo registros, porém o campo 
telefone 
> coloquei como UNIQUE e quando rodo a Procedure apresenta o 
seguinte 
> erro: 
> 
> [1]: (Error): ORA-1: unique constraint (USUARIO.TABELA3) 
violated 
> ORA-06512: at line 35
> 
> Desde já agradeço.
> 
> SELECT a.telefone, b.cod_cliente
> FROM   tabela1 a,
>tabela2 b
> WHERE a.cod_cliente = b.cod_cliente
> 
> MINUS
> 
> SELECT telefone, cod_cliente
> FROM   tabela3
>




[oracle_br] Re: Consulta a base oracle sem o oracle client

2005-12-27 Por tôpico jlchiappa
Sim, o banco absolutamente ** não tem ** controle de que
programa-cliente e/ou linguagem vc está usando, se é algo "Oracle" ou
"não-Oracle". Inclusive, se vc usar uma tool/linguagem que faça
conexão thin (normalmente java com JDBC é capaz disso), vc pode
acessar o banco até mesmo sem software de client Oracle instalado, se
for o caso... Já se a ferramenta/linguagem "não-Oracle" que vc quer
conecta via ODBC/ADO/OLEDB ou similares, aí ao menos o software de
client Oracle instalado vc tem que ter.

[]s

 Chiappa


--- Em oracle_br@yahoogrupos.com.br, "fernando_schmitt1"
<[EMAIL PROTECTED]> escreveu
>
> Saudação á todos!
> 
> Gostaria de saber se haveria a possibilidade de realizar consultas a 
> base de dados oracle sem o uso de uma ferramenta da oracle.
> 
> Atenciosamente,
> Fernando
>






--
Atenção! As mensagens deste grupo são de acesso público e de inteira 
responsabilidade de seus remetentes.
Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ 
--_
Area de download do grupo - http://www.4shared.com/dir/101727/a4dcc423  
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