É o que eu falei mesmo, Alex : é escrever uma FUNCTION que
receba os parãmetros e internamente execute a expressão e retorne um 
número (zero ou um talvez) , aí vc teria que alterar o WHERE para 
incluir uma
restrição do tipo :

...
AND minhafuncdeindice(VlrIcm, VlrIpi, VlrIRF) > 0

e indexar a função.

[]s

 Chiappa
--- Em [email protected], "Informatica" <[EMAIL PROTECTED]> 
escreveu
>
>  
>       No caso a expressão seria sempre a mesma. É só um processo da 
empresa que precisa de uma seleção deste tipo. 
>       Agradeço o retorno.
> 
>       []'s do Alex!
> 
>       O jeito de um sonho se tornar verdadeiro é o jeito que temos 
de tirar verdades do sonho. 
>       (James Hillman)
> 
>         Alexssandro André Gottschalk
>         Informática - A. Grings S.A.
>     mailto:[EMAIL PROTECTED]
> MSN Messenger: [EMAIL PROTECTED]
>           (51) 3545-1000 (R.: 359)
>                Igrejinha - RS
> 
> -----Mensagem original-----
> De: [email protected] 
[mailto:[EMAIL PROTECTED] Em nome de jlchiappa
> Enviada em: segunda-feira, 15 de maio de 2006 10:33
> Para: [email protected]
> Assunto: [oracle_br] Re: Índice para uma experssão. Tem como??
> 
> Alex, pra vc poder indexar tem que ser alguma coisa fixa, que 
retorne 
> um único valor dado o mesmo input, e que conste no dicionário de 
> dados permanentemente : colunas obdedecem à isso, functions 
obedecem 
> á isso, expressões não, então o que vc faria é uma FUNCTION que 
> receba os parãmetros e internamente execute a expressão e retorne 
> zero um um, aí vc teria que alterar o WHERE para incluir uma 
> restrição do tipo :
> 
> ...
>   AND minhafuncdeindice(VlrIcm, VlrIpi, VlrIRF) > 0
> ...
> 
> é isso. Logicamente, no bd Oracle um índice NÃO é dinâmico, ie, 
> apenas quando vc cria o índice é que a expressão é "compilada", a 
> chave resultante é montada, armazenada e daí pra frente nos DMLs a 
> chave tem seu valor alterado/deletado ou são criadas novas chaves 
mas 
> sempre com a MESMA condição/expressão do CREATE, assim isso vai ter 
> servir se a expressão SEMPRE é VlrIcm+VlrIpi+VlrIRF, se hoje é 
> VlrIcm+VlrIpi+VlrIRF amanhã é outra o índice NÃO vai te servir, a 
não 
> ser que vc o recire a cada mudança de expressão.
> 
> []s
> 
>  Chiappa
>  
> --- Em [email protected], "Informatica" 
<[EMAIL PROTECTED]> 
> escreveu
> >
> >     Bom dia, tenho um SQL aqui na empresa que para a seleção é 
> utilizada uma expressão matemática para restrição dos dados. Existe 
> uma maneira de criar uma índice para uma expressão assim como pode 
> ser criado índice para uma função??
> >  
> >     O SQL seria algo como:
> >  
> >     Select CodCli, DatEnt, NumNfv From Notas
> >               Where (VlrIcm+VlrIpi+VlrIRF) > 0;
> >  
> >     Existem outros campos envolvidos na seleção, mas a expressão 
é 
> o mais restritivo. Alguma sugestão??
> >  
> > Oracle 10g (10.1.0.5.0) on MS Windows 2003 
> >  
> >         []'s do Alex!
> > 
> >         O jeito de um sonho se tornar verdadeiro é o jeito que 
> temos de tirar verdades do sonho. 
> >         (James Hillman)
> > 
> >         Alexssandro André Gottschalk
> >         Informática - A. Grings S.A.
> >     mailto:[EMAIL PROTECTED]
> > MSN Messenger: [EMAIL PROTECTED]
> >           (51) 3545-1000 (R.: 359)
> >                Igrejinha - RS
> > 
> > 
> > 
> > [As partes desta mensagem que não continham texto foram removidas]
> >
> 
> 
> 
> 
> 
> 
> 
> --------------------------------------------------------------------
------------------------------------------------------
> 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/[email protected]/ 
> --------------------------------------------------------------------
------------------------------------------------------
__________________________________________________________________
> 
> Este Grupo recebe o apoio da SQL Magazine - 
www.devmedia.com.br/sqlmagazine 
> __________________________________________________________________
> O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, 
tenha o link do mesmo para evitar trafego(pedidos) desnecessário. 
> 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/[email protected]/ 
--------------------------------------------------------------------------------------------------------------------------__________________________________________________________________

Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine 
__________________________________________________________________
O grupo Oracle_br não aceita anexos. Quando oferecer algum arquivo, tenha o 
link do mesmo para evitar trafego(pedidos) desnecessário. 
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

 


Responder a