Update Decimal Wert mit Characterwerten
- Dieses Thema hat 1 Antwort und 1 Teilnehmer, und wurde zuletzt aktualisiert vor 18 Jahre, 8 Monaten vonMitglied.
- AuthorPosts
- 28. September 2004 um 15:36 Uhr #2458
Ich bräuchte eine passende Syntax für folgendes Problem:
Update eines 10-stelligen Decimal-Feldes mit dem 10-stelligen Inhalt eines Characterfeldes, durch Substr-Befehl aus einem größeren CHAR-Feld herausgelöst.
Bisher ist mir folgendes eingefallenUPDATE TTA.TABA0047 A
SET NR_OBJ =
(SELECT DECIMAL(SUBSTR(C.TSA_MIT, 194, 10),10) AS PRGKTO FROM
(SELECT *
FROM TTA.TABA0048 B
WHERE DIGITS(B.NR_OBJ) ^= SUBSTR(B.TSA_MIT, 194, 10)
)
AS C
)
;Diese Aktion liefert aber stets den SQLCODE -407:
DSNT408I SQLCODE = -407, ERROR: AN UPDATE, INSERT, OR SET VALUE IS NULL, BUT
THE OBJECT COLUMN CANNOT CONTAIN NULL VALUESDas Ausgangsfeld TSA_MIT enthält aber definitv einen Zahlenwert an der angegebenen Stelle (man kann das auch per Selektion nachweisen).
Hat jemand eine Idee ??
Vielen Dank
Michi29. September 2004 um 6:43 Uhr #2930*brainstorming*
der Update der Tabelle A hat keine WHERE-Bedingung und auch keine Korrelation mit dem SELECT. Alle Zeilen der Tabelle A erhalten also den gleichen Wert.
der SELECT … WHERE DIGITS(B.NR_OBJ) ^= SUBSTR(B.TSA_MIT, 194, 10)
darf nur eine einzige Ergebniszeile bringen …der NESTED TABLE ist m.E. unnötig. Ein
UPDATE TTA.TABA0047 A
SET NR_OBJ =
(SELECT DECIMAL(SUBSTR(C.TSA_MIT, 194, 10),10) FROM TTA.TABA0048 BWHERE DIGITS(B.NR_OBJ) ^= SUBSTR(B.TSA_MIT, 194, 10)
)
;sollte das gleiche Ergebnis liefern.
Ich vermute mal, eine der Korrelationen ist falsch, dass es z.B.
WHERE DIGITS(A.NR_OBJ) ^= SUBSTR(B.TSA_MIT, 194, 10)
heissen sollte - AuthorPosts
You must be logged in to reply to this topic.