Funcao LAST - Oracle

E ae pessoal !!!

Alguem sabe se existe uma funcao semelhante ao LAST do MS Access no Oracle 9i ?
Esta funcao retorna o ultimo registro incluido entre uma colecao de registros selecionados.

Falow!!!

Uma sugestão:

select * from usuario where rowid = (select max(rowid) from usuario)

[quote=“RodrigoSol”]Uma sugestão:

select * from usuario where rowid = (select max(rowid) from usuario) [/quote]

Eu não sei o que a função LAST retorna, mas se é a ultimo registro inserido na tabela (foi o que intendi) não da pra fazer assim não. O oracle não garante que este “MAX” do Rowid seja o ultimo registro inserido.

[]'s

troque rowid por rownum.

rownum é o numero da linha do cursor resultante da sua pesquisa.

[]'s

Ja rodou este SQL?

Ele não traz nada. Sinceramente a menos que a versão 9i tenha algo pronto, trazer o ultimo registro no oracle sem ter uma chave para isso da uma dor de cabeça.

[]'s

:arrow: Você pode colocar um timestamp na hora de inserir o registro.

psilva,
para as tabelas que tem uma sequence como chave, você pode fazer isso:

select u.* from usuario u where u.sq_usuario = (select max(us.sq_usuario) from usuario us)

Ou seguir a sugestão do Rodrigo com timestamp.

[quote=“MarcusGonçalves”]psilva,
para as tabelas que tem uma sequence como chave, você pode fazer isso:

select u.* from usuario u where u.sq_usuario = (select max(us.sq_usuario) from usuario us)

Ou seguir a sugestão do Rodrigo com timestamp.[/quote]

Uma questão simples que gera um transtorno grande demais!

Vou pesquisar… acho que tem um lugar no dicionario de dados do oracle que ele guarda isso…

até.

[quote=“RodrigoSol”][quote=“MarcusGonçalves”]psilva,
para as tabelas que tem uma sequence como chave, você pode fazer isso:

select u.* from usuario u where u.sq_usuario = (select max(us.sq_usuario) from usuario us)

Ou seguir a sugestão do Rodrigo com timestamp.[/quote]

Uma questão simples que gera um transtorno grande demais!

Vou pesquisar… acho que tem um lugar no dicionario de dados do oracle que ele guarda isso…

até.[/quote]

Rodrigo,

Se tu achar posta ai :D.

Como eu disse…acho meio dificil a não ser que a Oracle colocou isso na nova versão 10G. O que tb não acredito.
Essa discução ja rolou muito pano pra manga na lista de Oracle_Br no Yahoo. E nada de concreto alem de se usar uma sequence sendo gravada em um registro para após fazer essa busca.

O problema é que o Oracle não grava em ordem os registros. Isso vai da “cabeça” do banco na hora de fazer o insert.

Agora voltando ao post. Qual a tua chave primaria? Não tem como buscar por ela?

[]'s

Não dá mesmo…

O pior é que em todas as alternativas podemos ter problemas…

Segundo algumas informações que eu achei e que não tenho certeza da veracidade, o problema de usar timestamp é que existe possibilidade muito remota em um servidor com muitos processadores de ficar igual.

Usando sequence ou alguma outra chave você garante a ordem, mas pode ter problemas de performace em tabelas muito grandes…

Tome índices… :lol:

[]’s

[quote=“RodrigoSol”][quote=“fabgp2001”]
Rodrigo,

Se tu achar posta ai :D.

[/quote]

Não dá mesmo…

O pior é que em todas as alternativas podemos ter problemas…

Segundo algumas informações que eu achei e que não tenho certeza da veracidade, o problema de usar timestamp é que existe possibilidade muito remota em um servidor com muitos processadores de ficar igual.

Usando sequence ou alguma outra chave você garante a ordem, mas pode ter problemas de performace em tabelas muito grandes…

Tome índices… :lol:

[]’s[/quote]

É mas alguem sabe pq o Oracle não implementa isso?

[]'s

Olá

A chave deve incluir o timestamp, mas não deve ser formada exclusivamente pelo timestamp.

[]s
Luca

[quote=“Luca”]Olá

A chave deve incluir o timestamp, mas não deve ser formada exclusivamente pelo timestamp.

[]s
Luca[/quote]

Se eu usasse uma sequence, por exemplo, por que eu deveria incluir um campo timestamp?

Olá

Não quiz dizer que não possa usar outras alternativas. Só quiz enfatizar que a solução do timestamp é boa mas que o timestamp sozinho não serve para chave pela possibilidade de coincidência.

Na área de EDI há mensagens que podem ser iguais, isto é, o mesmo conteúdo pode ser enviado mais de uma vez. Exemplo: pedidos de entrega da industria automobilística que são reenviados várias vezes. Os pedidos precisam ser todos armazenados e comparados para verificar qual o mais recente e se o conteúdo é o mesmo.

Uma das possibilidades de solução é criar uma chave tipo sopa contendo o timestamp e outros ingredientes de modo a ter certeza que as mensagens estão na ordem de chegada.

[]s
Luca