Função no Oracle

Delphi

19/06/2004

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

Curtidas 0

Respostas

Aroldo Zanela

Aroldo Zanela

19/06/2004

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


GOSTEI 0
Emerson Nascimento

Emerson Nascimento

19/06/2004

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.


GOSTEI 0
Aroldo Zanela

Aroldo Zanela

19/06/2004

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



GOSTEI 0
POSTAR