SQL-Code:
CREATE PROCEDURE TESTPREISSP8
RETURNS (
ID INTEGER,
NR INTEGER,
BEZ CHAR(30),
PREIS DECIMAL(15,2))
AS
begin
for
select ID, NR, BEZ, PREIS from ART, ERMITTLE_ARTPREIS (ID,5,'01.01.2006')
where (ID <= 111)
into :ID,:NR,:BEZ, :PREIS
do
suspend;
end^
Ich schätze hier liegt eine Verwechslung vor zwischen ID und ID.
Da steht ERMITTLE_ARTPREIS (ID,5,'01.01.2006'): Das ID bezieht sich aber auf den Rückgabeparameter ID und nicht auf das ID, das du aus ART liest. Eigentlich müsste da zwar noch ein Doppelpunkt davor stehen, aber der Compiler beschwert sich oftmals trotzdem nicht. Hab ich mir auch schon paar mal die Zähne ausgebissen...
Was du wolltest, war wohl eher:
SQL-Code:
CREATE PROCEDURE TESTPREISSP8
RETURNS (
ID INTEGER,
NR INTEGER,
BEZ CHAR(30),
PREIS DECIMAL(15,2))
AS
begin
for
select ID, NR, BEZ from ART
where (ID <= 111)
into :ID,:NR,:BEZ
do
begin
select PREIS from ERMITTLE_ARTPREIS(:ID,5,'01.01.2006') into :PREIS;
suspend;
end
end^
Um Rekursion zu verstehen, muss man zunächst Rekursion verstehen.