Vereis tengo un procedimiento almacenado con Interbase 6.0 , lo que intento con él es sacar sólo 2 resultados de la consulta para cada campo clave, es decir,
Código:
1,....,0,0,...
5,....,2000,3000,....
5,...,2500,3500,....
.
.
10,....,2500,3500,....
10,....,2600,2000,....
.
.
15,....,2000,3000,...
15,....,1000,25000,....
.
para el numero 5 los 2 primeros resultados, para 10, para 15 y así sucesivamente con todos los números de contador que salgan en la consulta
él procedimiento de interbase es el siguiente:
Código:
cont=1;
FOR SELECT LECTURA
FROM LECTURAS
WHERE NUMERO=:NUMERO
AND FECHA<:HOY
ORDER BY FECHA DESC
INTO :LECT DO
BEGIN
if (CONT=1) then
lect1=:lect;
else
begin
lect2=:lect;
end
cont=cont+1;
if(cont>2) then
begin
suspend;
break;
end
END
os explico uun poquitín lo que hago, tengo una consulta a la que la paso un numero de contador(:numero) de una consulta anterior que no he especificado(lo que hace esta consulta es sacar los contadores que tengo con sus datos) y en esta saco las lecturas de esos contadores anteriores a la fecha actual. El cliente necesita saber las 2 leturas anteriores.
pero el break da error no es válido para interbase, con exit sólo me saca los 2 primeros del 5 y se sale del procedimiento, así que necesito algo similar al break.
Ahora lo que hago es sacar todas las lecturas anterioes y con el 'next' pasar de lecturas desde Delphi, pero tarda 14 segundos y me parece mucho tiempo.
Si alguien sabe la equivalencia de break en interbase u otra forma de hacer lo expuesto, se lo agradecería muchísimo.
Gracias de antemano.
PD: Espero haberme explicado con claridad, si alñguien no entiende lo expuesto ruego me lo comuniquen, ya saben uno lo tiene en la cabeza y le parece tan sencillo de explicar lo complicado es que le entiendan, jajajajaja