Zitat von
Hansa:
Unter der Voraussetzung, daß es mind. 3 Sätze gibt, geht es so :
SQL-Code:
CREATE PROCEDURE ERMITTLE_ALLEMWSTSP (
ABDATUM DATE)
RETURNS (
MWSTSATZ_OUT INTEGER,
MWSTWERT_OUT DECIMAL(15,2))
AS
begin
FOR
SELECT FIRST 3 MWSTSATZ, MWSTWERT FROM MWST WHERE ABDATUM <= :ABDATUM ORDER BY MWSTSATZ,ABDATUM DESC
INTO :MWSTSATZ_OUT,:MWSTWERT_OUT
DO
SUSPEND;
end^
Problem scheint also tatsächlich auf den Kern reduziert. Oder sieht jemand noch einen Fehler ?
Hallo Hansa!
Nein, das funktioniert nicht korrekt.
Wenn Du z. B. folgende Daten hast:
Zitat:
ID, MWSTSATZ, ABDATUM, MWSTWERT
1, 0, 01.01.1980, 0
2, 0, 31.12.1980, 63
3, 1, 29.05.1990, 13
4, 2, 26.09.1995, 16
5, 2, 01.01.1980, 14
6, 1, 01.01.1980, 7
und Du rufst obige Procedure mit ABDATUM = '01.01.2005' auf, dann erhieltest Du folgendes:
Zitat:
ID_OUT, MWSTSATZ_OUT, ABDATUM_OUT, MWSTWERT_OUT
1, 0, 01.01.1980, 0
2, 0, 31.12.1980, 63
6, 1, 01.01.1980, 7
Ich denke, das wäre nicht in Deinem Sinne.
Mir ist gerade erst aufgefallen, das ich fast dieselbe Procedure gepostet habe, wie Frank. Da habe ich nicht so ganz aufgepaßt. Meine Zusatzbemerkungen passen zu seiner Procedure genauso wie zu meiner.
Gruß
Thomas