firebird eljárásban mi a hiba?

Adott egy tábla:

CREATE TABLE TABLA(
NEV VARCHAR(25) NOT NULL,
RNEV VARCHAR(5) NOT NULL,
JEL CHAR NOT NULL,
MERTEK DECIMAL(18,4) NOT NULL,
BEVIDO DATE NOT NULL,
PRIMARY KEY (JEL, BEVIDO)
);

Adott időponton belüli legkésőbbi BEVIDO-jű, adott JEL-ű rekordot kell kiválasztani.
Simán az alábbi lekérdezéssel működik:
SELECT NEV, RNEV, JEL, MERTEK
FROM TABLA AS T0 WHERE
JEL='C' AND BEVIDO=
(SELECT MAX(BEVIDO) FROM TABLA AS T1 WHERE
T1.JEL='C' AND T1.BEVIDO<=current_date)

Ugyanez eljárásba adoptálva nem ad eredményt:
CREATE PROCEDURE GETREC (AJEL CHAR, ADATUM DATE)
RETURNS (NEV VARCHAR(25), RNEV VARCHAR(5), JEL CHAR, MERTEK DECIMAL(18, 4))
AS
BEGIN
SELECT NEV, RNEV, JEL, MERTEK
FROM TABLA WHERE
JEL=:AJEL AND BEVIDO=
(SELECT MAX(BEVIDO) FROM TABLA AS T0 WHERE
T0.JEL=:AJEL AND T0.BEVIDO<=:ADATUM)
INTO :NEV, :RNEV, :JEL, :MERTEK;
END!!

Mi a gondja?

Hozzászólások

Talán mert hiányzik a végéről a Suspend;
Ja és arra vigyázz, hogy az általad leírt tárolteljárás könnyen elhasalhat "Multiple row in singelton select"
Vagyis előfordulhat, hogy a "Max(...)" által kiválasztott dátum és a jel alapján több találat is lesz. Ebben az esetben pedig vagy "for select ..." kell vagy "select first 1 ..."