Pegar apenas o último registro de um Select

Firebird

21/06/2004

Galera, estou criando uma SP, que me manda o último nr de uma OS. Mas eu gostaria de que ao mudar de ano, o sistema zerasse a numeração das OS. Então fiz uma Sp desta forma

CREATE PROCEDURE SP_GERAOS (
EMPCOD INTEGER)
RETURNS (
NROS INTEGER)
AS
DECLARE VARIABLE ULTDATA DATE;
DECLARE VARIABLE HOJE DATE;
begin
/* Pega a ultima Os da empresa Extract(Month from Data_Cadastro) ´today´*/
select Count(O.codos)
From Ordemser O
Where O.empcod =:empcod
into :nros;

/*Pega a data da ultima Os da empresa*/
select O.Fdataos << ERRO ESTÁ AQUI >>
From Ordemser O
where O.empcod =:EMPCOD
order by O.Fdataos desc
into :ULTDATA;


HOJE = ´Today´;

if (Extract(Year from Ultdata) < Extract(Year from Hoje) ) then
begin
nros = 0;
end

suspend;
end

Só q quando vou executar ele me dá a msg:

multiple rows in singlketon select.

E realmente onde eu faço o select O.fdataos, eu estou pedindo para armazenar o resultado desta sql em uma única var. ULTDATA.

O q quero é apenas pegar o ultimo registgro da empresa.

Existe algum comando no sql q permita q eu pegue o ultimo registro?

Ou alguma maneira de eu rescrever esta SP?

Obrigado


Aledeol

Aledeol

Curtidas 0

Respostas

Gandalf.nho

Gandalf.nho

21/06/2004

Use a função MAX, que traz o valor mais alto do campo desejado.


GOSTEI 0
POSTAR