Fórum Função no Oracle #238639
19/06/2004
0
Segue a seguinte estrutura:
PRODUTO
-----------
COD_PRODUTO [b:5a11669234](PK)[/b:5a11669234]
NOME_PRODUTO
PEDIDO
---------
COD_PEDIDO [b:5a11669234](PK)[/b:5a11669234]
COD_CLIENTE
DATA_PEDIDO
ITEM_PEDIDO
----------------
COD_PEDIDO [b:5a11669234](PK) (FK)[/b:5a11669234]
COD_PRODUTO [b:5a11669234](PK) (FK)[/b:5a11669234]
QUANTIDADE
Agora vem a função:
1) Passar o COD_CLIENTE como parametro
2) Retornar o Número do pedido (COD_PEDIDO) que tem a menor QUANTIDADE para este cliente.
Não sei fazer esta função em ORACLE.
OBS MUITO IMPORTANTE: o professor não ensinou nada de CURSOR OU LOOP.
Obrigado
Danilorsa
Curtir tópico
+ 0Posts
19/06/2004
Aroldo Zanela
Não é necessário criar cursor. Para localizar o pedido de menor quantidade utilize a função MIN e faça a restrição na cláusula Where. Aqui tem um artigo sobre a criação de funções no Oracle que poderão lhe ajudar: http://www.sqlmagazine.com.br/Artigos/Oracle/04_Intro_PLSQL.asp
Gostei + 0
20/06/2004
Emerson Nascimento
select first 1 ped.cod_pedido, min(itens.quantidade)
from pedido ped
left join item_pedido itens on (itens.cod_pedido = ped.cod_pedido)
where ped.cod_cliente = :cliente_desejado
group by ped.cod_pedido
order by 2
Esse código foi gerado para Firebird. Sei que no SQL Server o comando aquivalente ao FIRST é TOP, mas não sei qual é o comando equivalente no Oracle.
veja se isso te ajuda.
Gostei + 0
20/06/2004
Aroldo Zanela
Não creio que seja necessário usar restrição de linhas, pois o MIN já deverá resolver o problema. No entanto, uma forma de fazer isto no Oracle (a partir da versão 7) é utilizar a pseudocoluna ROWNUM. Exemplo:
select * from xTabela where rownum <= 5 order by coluna_nome
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)