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;
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;