PDA

View Full Version : SQL7939



WolfgangD
27-03-07, 11:12
Ich habe eine "ganz normale" Datei mit einigen Feldern darunter S1MENG (7,0 definiert). Allerdings habe ich folgendes "Problem":

Das SQL-Statement
update sps/sps100pf set s1meng = 111
bringt mir im Jobprotokoll (zu sehen nur im Debug-Modus) folgende Meldung
Nachricht . . . : Datenumsetzung für Anweisung INSERT oder UPDATE
erforderlich.
Ursache . . . . : Die Werte der Anweisung INSERT oder UPDATE können nicht
direkt in die Spalten gestellt werden, weil die Datenart oder die Länge
eines Werts sich von der Datenart bzw. Länge einer der Spalten
unterscheidet. Die Anweisung INSERT oder UPDATE wurde korrekt ausgeführt.
Die Systemleistung wäre jedoch besser, wenn keine Datenumsetzung
erforderlich wäre. Der Ursachencode für die Datenumsetzung lautet 2.
-- Ursachencode 1: Der Wert der Anweisung INSERT oder UPDATE ist eine
Zeichen- oder Grafikzeichenfolge mit einer Länge, die nicht mit der Länge
der Spalte S1MENG übereinstimmt.
-- Ursachencode 2: Der Wert der Anweisung INSERT oder UPDATE hat eine numerische Datenart, die nicht mit der Datenart der Spalte S1MENG
übereinstimmt.
-- Ursachencode 3: Der Wert der Anweisung INSERT oder UPDATE ist eine
...

Die Meldung kommt allerdings nur dann, wenn ein ODP erstellt wird.

Hat jemand eine Idee, was da los ist, bzw. wie ich das Feld definieren müsste, damit der "Fehler" nicht mehr auftritt?

Fuerchau
27-03-07, 18:32
Das liegt daran, dass Konstanten automatisch ein Typ zugewiesen wird.
111 könnte als Integer interpretiert werden.
Ggf. wäre hier 111,0 schon ausreichend ansonsten kannst du auch casten:

cast(111 as dec(7, 0)) bzw. dec(111, 7, 0)

Per Programm verwendest du ja automatisch richtig definierte Hostvariablen.

WolfgangD
28-03-07, 09:13
Danke - Variante 2 funktioniert