hawk B 0 Denunciar post Postado Setembro 16, 2012 boa tarde pessoal a procedure abaixo é para trazer em um refcursor o resultado desse select (nao sei se tá certo) que traga a maior venda entre um periodo. create or replace procedure maior_venda (p_data_inicial in date, -- parametros de entrada p_data_final in date, p_retorno out pk_maior.tp_refcursor) as begin open p_retorno for select p.prod_nome, p.sub_codigo, sum(vi.item_valor * vi.item_qtde)tot_venda from produto p, ven_itens vi, vendas v where vi.sub_cod = p.sub_cod and vi.ven_cod = v.ven_cod and v.ven_data between p_data_inical and p_data_final group by p.prod_nome, p.sub_cod end maior_venda; tah certo? sou novo em procedures e functions Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Setembro 17, 2012 1) tp_refcursor foi definido anteriormente ? 2) Antes do Open coloque if p_retorno%isopen then Close p_retorno; end if; 3) que traga a maior venda entre um periodo A query não faz isto, tente : select * from ( Select p.prod_nome, p.sub_codigo, sum(vi.item_valor * vi.item_qtde) tot_venda from produto p, ven_itens vi, vendas v where vi.sub_cod = p.sub_cod and vi.ven_cod = v.ven_cod and v.ven_data between p_data_inical and p_data_final group by p.prod_nome, p.sub_cod order by 3 desc ) where rownum <=1 Mas aí um Cursor não será necessário. Compartilhar este post Link para o post Compartilhar em outros sites