Fórum Função no Oracle #238639

19/06/2004

0

Pessoal, postei esta pergunta também no fórum do Oracle, mas pode ser que aqui alguém trabalhe com este banco e possa me ajudar.

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

Danilorsa

Responder

Posts

19/06/2004

Aroldo Zanela

Colega,

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


Responder

Gostei + 0

20/06/2004

Emerson Nascimento

não sei se entendi direito, mas creio que seja apenas:

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.


Responder

Gostei + 0

20/06/2004

Aroldo Zanela

Colega,

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



Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar