Re: RES: [oracle_br] bind com comentários

2005-12-30 Por tôpico leonardotaveira
Sim, são comandos diferentes, pois o texto é diferente. O correto e 
ideal é que você retire estes comentários do comando enviado ao BD.


--- Em oracle_br@yahoogrupos.com.br, Ivan Ricardo Schuster 
[EMAIL PROTECTED] escreveu

 Esqueci da versão:
 9.2.0.4
 
 -Mensagem original-
 De: oracle_br@yahoogrupos.com.br 
[mailto:[EMAIL PROTECTED] Em
 nome de Ivan Ricardo Schuster
 Enviada em: quinta-feira, 29 de dezembro de 2005 14:05
 Para: oracle_br@yahoogrupos.com.br
 Assunto: [oracle_br] bind com comentários
 
 Pessoal, uma duvida:
 
 Tenho um sql que é executado repetidas vezes, utilizo bind na 
clausula
 where, mas tenho um comentário que sempre é diferente. 
 
 
 Ex:
 
 Meu comando básico é:
 Delete from tabela where data=:vData
 
 Executo:
 Delete /*20051222*/ from tabela where data=:vData quando vData é
 '22/12/2005'
 
 Delete /*20051223*/ from tabela where data=:vData quando vData é
 '23/12/2005'
 
 A dúvida: O oracle considera isso como comandos diferentes?
 
 
 
 

 --
 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









--
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

 




RES: [oracle_br] bind com comentários

2005-12-29 Por tôpico Ivan Ricardo Schuster
Esqueci da versão:
9.2.0.4

-Mensagem original-
De: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em
nome de Ivan Ricardo Schuster
Enviada em: quinta-feira, 29 de dezembro de 2005 14:05
Para: oracle_br@yahoogrupos.com.br
Assunto: [oracle_br] bind com comentários

Pessoal, uma duvida:

Tenho um sql que é executado repetidas vezes, utilizo bind na clausula
where, mas tenho um comentário que sempre é diferente. 


Ex:

Meu comando básico é:
Delete from tabela where data=:vData

Executo:
Delete /*20051222*/ from tabela where data=:vData quando vData é
'22/12/2005'

Delete /*20051223*/ from tabela where data=:vData quando vData é
'23/12/2005'

A dúvida: O oracle considera isso como comandos diferentes?




--
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




 





--
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

 





Re: RES: [oracle_br] bind com comentários

2005-12-29 Por tôpico Marcio Portes
Testado na versão 9i. Sim ele vai gerar entradas distintas.
Fiz o seguinte.

drop table t;
create table t ( x int );
insert into t values ( 1 );
insert into t values ( 2 );

create or replace 
procedure p is
begin
for i in 1 .. 10
loop
delete /* 1 */ from t where x = i;
delete /* 2 */ from t where x = i;
end loop;
end;
/

alter session set sql_trace=true;
exec p;
exit

Depois vi no tkprof.

DELETE /* 1 */ from t 
where
 x = :b1


call count   cpuelapsed   disk  query
currentrows
--- --   -- -- -- --
  --
Parse1  0.00   0.00  0  0  
0   0
Execute 10  0.00   0.00  0 30  
3   2
Fetch0  0.00   0.00  0  0  
0   0
--- --   -- -- -- --
  --
total   11  0.00   0.00  0 30  
3   2

Misses in library cache during parse: 1
Optimizer goal: CHOOSE
Parsing user id: 102 (recursive depth: 1)

Rows Row Source Operation
---  ---
  0  DELETE  (cr=30 r=0 w=0 time=945 us)
  2   TABLE ACCESS FULL T (cr=30 r=0 w=0 time=396 us)

**
**

DELETE /* 2 */ from t 
where
 x = :b1


call count   cpuelapsed   disk  query
currentrows
--- --   -- -- -- --
  --
Parse1  0.00   0.00  0  0  
0   0
Execute 10  0.00   0.00  0 30  
0   0
Fetch0  0.00   0.00  0  0  
0   0
--- --   -- -- -- --
  --
total   11  0.00   0.00  0 30  
0   0

Misses in library cache during parse: 1
Optimizer goal: CHOOSE
Parsing user id: 102 (recursive depth: 1)

Rows Row Source Operation
---  ---
  0  DELETE  (cr=30 r=0 w=0 time=328 us)
  0   TABLE ACCESS FULL T (cr=30 r=0 w=0 time=310 us)

Cada um deles foi parseado uma vez e executado 10. Diferentemente 
quando retirei os comentários e mantive as duas chamadas o tkprof me 
mostrou 2 parses (1 hard e outro soft) e 20 execuções para a MESMA 
ENTRADA.

DELETE from t
where
 x = :b1


call count   cpuelapsed   disk  query
currentrows
--- --   -- -- -- --
  --
Parse2  0.00   0.00  0  0  
0   0
Execute 20  0.00   0.01  0 60  
3   2
Fetch0  0.00   0.00  0  0  
0   0
--- --   -- -- -- --
  --
total   22  0.00   0.01  0 60  
3   2

Misses in library cache during parse: 1
Optimizer goal: CHOOSE
Parsing user id: 102 (recursive depth: 1)

Rows Row Source Operation
---  ---
  0  DELETE  (cr=30 r=0 w=0 time=5612 us)
  2   TABLE ACCESS FULL T (cr=30 r=0 w=0 time=387 us)


script usado.

drop table t;
create table t ( x int );
insert into t values ( 1 );
insert into t values ( 2 );

create or replace 
procedure p is
begin
for i in 1 .. 10
loop
delete from t where x = i;
delete from t where x = i;
end loop;
end;
/

alter session set sql_trace=true;
exec p;
exit


--- Em oracle_br@yahoogrupos.com.br, Ivan Ricardo Schuster 
[EMAIL PROTECTED] escreveu

 Esqueci da versão:
 9.2.0.4
 
 -Mensagem original-
 De: oracle_br@yahoogrupos.com.br 
[mailto:[EMAIL PROTECTED] Em
 nome de Ivan Ricardo Schuster
 Enviada em: quinta-feira, 29 de dezembro de 2005 14:05
 Para: oracle_br@yahoogrupos.com.br
 Assunto: [oracle_br] bind com comentários
 
 Pessoal, uma duvida:
 
 Tenho um sql que é executado repetidas vezes, utilizo bind na 
clausula
 where, mas tenho um comentário que sempre é diferente. 
 
 
 Ex:
 
 Meu comando básico é:
 Delete from tabela where data=:vData
 
 Executo:
 Delete /*20051222*/ from tabela where data=:vData quando vData é
 '22/12/2005'
 
 Delete /*20051223*/ from tabela where data=:vData quando vData é
 '23/12/2005'
 
 A dúvida: O oracle considera isso como comandos diferentes?
 
 
 
 

 --
 Atenção! As mensagens deste grupo são de acesso público e de inteira
 responsabilidade de seus remetentes.
 Acesse: 

RES: RES: [oracle_br] bind com comentários

2005-12-29 Por tôpico Ivan Ricardo Schuster
Opa! Obrigado pela ajuda Marcio, vou ter que analisar o custo/beneficio
destes comentarios...


-Mensagem original-
De: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em
nome de Marcio Portes
Enviada em: quinta-feira, 29 de dezembro de 2005 15:21
Para: oracle_br@yahoogrupos.com.br
Assunto: Re: RES: [oracle_br] bind com comentários

Testado na versão 9i. Sim ele vai gerar entradas distintas.
Fiz o seguinte.

drop table t;
create table t ( x int );
insert into t values ( 1 );
insert into t values ( 2 );

create or replace 
procedure p is
begin
for i in 1 .. 10
loop
delete /* 1 */ from t where x = i;
delete /* 2 */ from t where x = i;
end loop;
end;
/

alter session set sql_trace=true;
exec p;
exit

Depois vi no tkprof.

DELETE /* 1 */ from t 
where
 x = :b1


call count   cpuelapsed   disk  query
currentrows
--- --   -- -- -- --
  --
Parse1  0.00   0.00  0  0  
0   0
Execute 10  0.00   0.00  0 30  
3   2
Fetch0  0.00   0.00  0  0  
0   0
--- --   -- -- -- --
  --
total   11  0.00   0.00  0 30  
3   2

Misses in library cache during parse: 1
Optimizer goal: CHOOSE
Parsing user id: 102 (recursive depth: 1)

Rows Row Source Operation
---  ---
  0  DELETE  (cr=30 r=0 w=0 time=945 us)
  2   TABLE ACCESS FULL T (cr=30 r=0 w=0 time=396 us)

**
**

DELETE /* 2 */ from t 
where
 x = :b1


call count   cpuelapsed   disk  query
currentrows
--- --   -- -- -- --
  --
Parse1  0.00   0.00  0  0  
0   0
Execute 10  0.00   0.00  0 30  
0   0
Fetch0  0.00   0.00  0  0  
0   0
--- --   -- -- -- --
  --
total   11  0.00   0.00  0 30  
0   0

Misses in library cache during parse: 1
Optimizer goal: CHOOSE
Parsing user id: 102 (recursive depth: 1)

Rows Row Source Operation
---  ---
  0  DELETE  (cr=30 r=0 w=0 time=328 us)
  0   TABLE ACCESS FULL T (cr=30 r=0 w=0 time=310 us)

Cada um deles foi parseado uma vez e executado 10. Diferentemente 
quando retirei os comentários e mantive as duas chamadas o tkprof me 
mostrou 2 parses (1 hard e outro soft) e 20 execuções para a MESMA 
ENTRADA.

DELETE from t
where
 x = :b1


call count   cpuelapsed   disk  query
currentrows
--- --   -- -- -- --
  --
Parse2  0.00   0.00  0  0  
0   0
Execute 20  0.00   0.01  0 60  
3   2
Fetch0  0.00   0.00  0  0  
0   0
--- --   -- -- -- --
  --
total   22  0.00   0.01  0 60  
3   2

Misses in library cache during parse: 1
Optimizer goal: CHOOSE
Parsing user id: 102 (recursive depth: 1)

Rows Row Source Operation
---  ---
  0  DELETE  (cr=30 r=0 w=0 time=5612 us)
  2   TABLE ACCESS FULL T (cr=30 r=0 w=0 time=387 us)


script usado.

drop table t;
create table t ( x int );
insert into t values ( 1 );
insert into t values ( 2 );

create or replace 
procedure p is
begin
for i in 1 .. 10
loop
delete from t where x = i;
delete from t where x = i;
end loop;
end;
/

alter session set sql_trace=true;
exec p;
exit


--- Em oracle_br@yahoogrupos.com.br, Ivan Ricardo Schuster 
[EMAIL PROTECTED] escreveu

 Esqueci da versão:
 9.2.0.4
 
 -Mensagem original-
 De: oracle_br@yahoogrupos.com.br 
[mailto:[EMAIL PROTECTED] Em
 nome de Ivan Ricardo Schuster
 Enviada em: quinta-feira, 29 de dezembro de 2005 14:05
 Para: oracle_br@yahoogrupos.com.br
 Assunto: [oracle_br] bind com comentários
 
 Pessoal, uma duvida:
 
 Tenho um sql que é executado repetidas vezes, utilizo bind na 
clausula
 where, mas tenho um comentário que sempre é diferente. 
 
 
 Ex:
 
 Meu comando básico é:
 Delete from tabela where data=:vData
 
 Executo:
 Delete /*20051222*/ from tabela where data=:vData quando vData é
 '22/12/2005'
 
 Delete /*20051223*/ from tabela where data=:vData quando vData é
 '23/12/2005'
 
 A dúvida: O

Re: RES: [oracle_br] bind com comentários

2005-12-29 Por tôpico jlchiappa
É : faz todo o sentido ele (o otimizador) não mexer no que está 
dentro de /* .. */, pois isso PODERIA ser uma hint, que logicamente 
teria que ser levado em consideração. Já um comentário-comentário 
MESMO, que não usa essa sintaxe, que o timizador SEGURAMENTE consegue 
identificar que aquilo SÓ PODE mesmo ser comentário, aí sim o stored 
PL/SQL stripa, cfrme 9executando no sqlplus o cara abaixo) :


drop table t;
create table t ( x int );
insert into t values ( 1 );
insert into t values ( 2 );
create or replace
procedure p is
begin
for i in 1 .. 10
loop
delete from t where x = i; -- deletando 1a vez
delete from t where x = i; -- deletando 2a vez
end loop;
end;
/
alter session set sql_trace=true;
exec p;
exit

== obtenho no tkprof :

TKPROF: Release 9.2.0.5.0 - Production on Qui Dez 29 15:54:29 2005

Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.
.
**
**

BEGIN p; END;


call count   cpuelapsed   disk  query
currentrows
--- --   -- -- -- --
  --
Parse1  0.00   0.00  0  0  
0   0
Execute  1  0.00   0.00  0  0  
0   1
Fetch0  0.00   0.00  0  0  
0   0
--- --   -- -- -- --
  --
total2  0.00   0.00  0  0  
0   1

Misses in library cache during parse: 1
Optimizer goal: CHOOSE
Parsing user id: 69
**
**

DELETE FROM T
WHERE
 X = :B1

== o coment foi stripado, portanto o texto ficou o mesmo

call count   cpuelapsed   disk  query
currentrows
--- --   -- -- -- --
  --
Parse2  0.00   0.00  0  0  
0   0
Execute 20  0.00   0.00  0 60  
3   2
Fetch0  0.00   0.00  0  0  
0   0
--- --   -- -- -- --
  --
total   22  0.00   0.00  0 60  
3   2

== então é mesmo usar SEMPRE coments externos ao seu SQL dentro de 
procedures : na minha apresentação da ENPO, quando recomendei usar-se 
stored PL/SQL, justamente a remoção de espaços em branco e coments 
foi citada como uma das vantagens de stored proc, para se ter mais 
chances de se obter textos iguais e evitar hard PARSEs extras.

[]s

 Chiappa
 
--- Em oracle_br@yahoogrupos.com.br, Marcio Portes 
[EMAIL PROTECTED] escreveu

 Testado na versão 9i. Sim ele vai gerar entradas distintas.
 Fiz o seguinte.
 
 drop table t;
 create table t ( x int );
 insert into t values ( 1 );
 insert into t values ( 2 );
 
 create or replace 
 procedure p is
 begin
 for i in 1 .. 10
 loop
 delete /* 1 */ from t where x = i;
 delete /* 2 */ from t where x = i;
 end loop;
 end;
 /
 
 alter session set sql_trace=true;
 exec p;
 exit
 
 Depois vi no tkprof.
 
 DELETE /* 1 */ from t 
 where
  x = :b1
 
 
 call count   cpuelapsed   disk  query
 currentrows
 --- --   -- -- -- --
   --
 Parse1  0.00   0.00  0  0  
 0   0
 Execute 10  0.00   0.00  0 30  
 3   2
 Fetch0  0.00   0.00  0  0  
 0   0
 --- --   -- -- -- --
   --
 total   11  0.00   0.00  0 30  
 3   2
 
 Misses in library cache during parse: 1
 Optimizer goal: CHOOSE
 Parsing user id: 102 (recursive depth: 1)
 
 Rows Row Source Operation
 ---  ---
   0  DELETE  (cr=30 r=0 w=0 time=945 us)
   2   TABLE ACCESS FULL T (cr=30 r=0 w=0 time=396 us)
 
 
**
 **
 
 DELETE /* 2 */ from t 
 where
  x = :b1
 
 
 call count   cpuelapsed   disk  query
 currentrows
 --- --   -- -- -- --
   --
 Parse1  0.00   0.00  0  0  
 0   0
 Execute 10  0.00   0.00  0 30  
 0   0
 Fetch0  0.00   0.00  0  0  
 0   0
 --- --   -- -- -- --
   --
 total   11  0.00   0.00  0 30  
 0   0
 
 Misses in library