Anmelden

View Full Version : Insert into mit Hostvariablen und Case



Norbi
23-04-13, 10:29
Hallo zusammen,

die Case-Struktur in meiner Insert-Anweisung innerhalb einer Prozedur gibt nicht das gewünschte Ergebnis zurück. Auch wenn bestellnr = ' ' ist oder Buchstaben enthält, wird dec(:bestellnr, 10, 0) als value-Wert ermittelt, was verständlicherweise zu einem Datenumsetzungsfehler führt. Was ist falsch an meiner case-Abfrage? Wie erreiche ich das 0 zurückgegeben wird, wenn die Bedingungen nicht erfüllt ist?


exec sql insert into tabelle
(id, referenz, bestelldatum)
values(:transid,
case
when :bestellnr <> ' ' and
substr(:bestellnr, 1, 1) in
('1', '2', '3', '4', '5', '6', '7', '8', '9', '0')
and substr(:bestellnr, 2, 1) in
('1', '2', '3', '4', '5', '6', '7', '8', '9', '0')
then dec(:bestellnr, 10, 0)
else 0
end,
:isodatum)
with nc;

andreaspr@aon.at
23-04-13, 10:50
Eventuell ist dein "BLANK" nicht das gleiche "BLANK" (hex) auf das in SQL geprüft wird.


case
when :bestellnr <> ' ' and :bestellnr <> X'40' ...

lg Andreas

Norbi
23-04-13, 13:16
Hallo Andreas,

:) das war des Rätsels Lösung.
Vielen Dank für die schnelle Antwort. Sql ist manchmal nicht ganz einfach.

Gruß
Norbi

Pikachu
23-04-13, 14:26
Probier mal mit einer leeren Zeichenkette: :bestellnr <> ''