View Full Version : SQL0418 Fehler - Parametermarkierung
Hallo Forum,
folgendes SQL-Statement funzt auf der AS wunderbar. Es geht um eine Datumsauswahl von 5 Tagen.
Unter Java mit SQLJ erhalte ich bei der
Ausführung folgenden Fehler:
"java.sql.SQLException: [SQL0418] Verwendung von Parametermarkierungen ungültig."
Weiss jemand wo der Fehler liegt? Danke...
SQL-Statement:
#sql rs = { select F1, F2
FROM bibl1.file1
WHERE F1 = '01' and
F2 = '1' and
F3 = 0 and
DATE('2009' concat '-' concat Substr(Digits(DATUM), 3, 2) concat '-' concat Substr(Digits(DATUM), 1, 2))
between CURDATE() and (CURDATE() + 5 DAYS)
ORDER BY Substr(Digits(DATUM), 3, 2),
Substr(Digits(DATUM), 1, 2)
};
Viele Grüße
Hallo;
ich nehme an, dass CURDATE und/oder CURDATE + 5 DAYS den Fehler verursachen.
Versuche folgendes:
1. Verwende anstatt CURDATE Current_Date. (Ich vermute allerdings, das dies auch nicht zum Erfolg führt.)
2. Ermittle das Tagesdatum und das Ende-Datum vorab. Bereite beides als alphnumerischen String auf und binde diese Ergebnisse ein.
Birgitta
Ich hoffe die "{}" gehören NICHT zum SQL-Befehl dazu.
"{}" initiieren eigentlich einen Procedure-Call.
Hallo,
it depends on release!
Parameter Marker Unterstützung auf der AS/400 ist ein leidiges Thema, die Datenbank kann da einiges nicht, was andere (auch DB2, soviel zu UDB, was ja auch wieder out ist) können, bereits der CONCAT ist problematisch. Manchmal hilft ein (eigentlich unsinniger) Cast. Zur weiteren Analyse würde ich nacheinander die Bedingungen und den order by reduzieren, um die Bruchstelle zu finden. Es kann aber durchaus sein, dass dieses Statement mit SQLJ nicht gegen die Datenbank zu kriegen ist.
Dieter Bender
Hallo Forum,
folgendes SQL-Statement funzt auf der AS wunderbar. Es geht um eine Datumsauswahl von 5 Tagen.
Unter Java mit SQLJ erhalte ich bei der
Ausführung folgenden Fehler:
"java.sql.SQLException: [SQL0418] Verwendung von Parametermarkierungen ungültig."
Weiss jemand wo der Fehler liegt? Danke...
SQL-Statement:
#sql rs = { select F1, F2
FROM bibl1.file1
WHERE F1 = '01' and
F2 = '1' and
F3 = 0 and
DATE('2009' concat '-' concat Substr(Digits(DATUM), 3, 2) concat '-' concat Substr(Digits(DATUM), 1, 2))
between CURDATE() and (CURDATE() + 5 DAYS)
ORDER BY Substr(Digits(DATUM), 3, 2),
Substr(Digits(DATUM), 1, 2)
};
Viele Grüße
Danke für die Eure Hilfe!
Habe die Lösung:
#sql rs = { select F1, F2
FROM bibl1.file1l
WHERE F1 = '01' and
F2 = '1' and
F3 = 0 and
Date(YEAR(CURRENT DATE) concat '-' concat Substr(Digits(DATUM), 3, 2) concat '-' concat Substr(Digits(DATUM), 1, 2))
between CURRENT DATE and (CURRENT DATE + 5 DAYS)
ORDER BY Substr(Digits(DATUM), 3, 2),
Substr(Digits(DATUM), 1, 2)
};
Schöne Grüße