Ae galera, to com uma dúvida quanto a como fazer uma procedure. Recebo como parametro um código de material inicial e um final, o que preciso fazer é um filtro pelo material inicial até o final. Fiz isto, só que acho que da forma que eu fiz tem uma perda de performance, gostaria de ver se alguem tem alguma sugestão do que posso fazer. Ai vai um exemplo do código.
create or replace procedure busca_posicao_movimentos( p_un CHAR, p_cd_material_ini VARCHAR2 DEFAULT ' ', p_cd_material_fin VARCHAR2 DEFAULT ' ', p_data_movimento DATE default null, p_sequencia_dia NUMBER default 0, p_c644_data_saldo DATE default null) is cursor cr_pos_fisica is select mov.total_entradas, mov.total_saidas, mov.total_compras from esmovime mov where mov.uni_neg = p_un and p_cd_matterial_ini <= mov.cd_material and (mov.cd_material <= p_cd_material_fin or p_cd_material_fin is null) and mov.sequencia_dia > 0 and ( p_c644_data_saldo is null or mov.dt_movimento >= p_c644_data_saldo) and ( ( p_data_movimento is null) or ( p_sequencia_dia <> 0 and ( p_data_movimento > mov.dt_movimento or p_sequencia_dia > mov.sequencia_dia )) or ( p_sequencia_dia = 0 and p_data_movimento >= mov.dt_movimento)); ... a minha dúvida em relação ao código acima é que quando entro na função, já tenho os valores das variáveis resolvidos então queria saber se não tem como fazer um código mais otimizado pois por exemplo: ... and ( p_c644_data_saldo is null or mov.dt_movimento >= p_c644_data_saldo)... neste código acima, quando abro o cursor, eu já sei se o parametro é nulo ou não, e colocando isto no código, acredito que tenha uma perda de performance e o oracle acaba não usando o indice por causa do 'or'. Obrigado -- kbcao / Michel Galle MSN: [EMAIL PROTECTED] Mail: [EMAIL PROTECTED] "Isto não são pedras, são aerolitos!!!" _______________________________________________________ Yahoo! Acesso Grátis - Internet rápida e grátis. Instale o discador agora! http://br.acesso.yahoo.com/ ______________________________________________________________________ Histórico: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ Falar com os Moderadores:([EMAIL PROTECTED]) Dorian Anderson Soutto - Fernanda Damous - Alisson Aguiar ______________________________________________________________________ Links do Yahoo! Grupos <*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/oracle_br/ <*> Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html