![]() |
Datenbank: MySQL • Version: 5 • Zugriff über: UniDac
Mehrfach Update STatement
Hallo Zusammen,
ich versuche mich gerade an einem Statement, mit dem ich mehrere Zeilen (hier im Beispiel 3 Zeilen) mit jeweil 3 Werten updaten möchte. Wenn ich das mit einzelnen SQL-Statements mache, wird die Procedure sehr langsam. Folgendes habe ich gefunden, bzw. auf meinen Fall umgebaut:
Delphi-Quellcode:
Aber leider habe ich das Problem, dass ich die Fehlermeldung "Column 'sequence' cannot be null" bekomme.
update as400 set
sequence = case when concat(waaunr,'-',waaupo) ='408216-0' and oaagnr =10 then 1 when concat(waaunr,'-',waaupo) ='408217-0' and oaagnr =10 then 2 when concat(waaunr,'-',waaupo) ='408218-0' and oaagnr =10 then 3 end, frozen = case when concat(waaunr,'-',waaupo) ='408216-0' and oaagnr =10 then 1 when concat(waaunr,'-',waaupo) ='408217-0' and oaagnr =10 then 1 when concat(waaunr,'-',waaupo) ='408218-0' and oaagnr =10 then 0 end, plan_date = case when concat(waaunr,'-',waaupo) ='408216-0' and oaagnr =10 then '2019-07-05' when concat(waaunr,'-',waaupo) ='408217-0' and oaagnr =10 then '2019-07-05' when concat(waaunr,'-',waaupo) ='408218-0' and oaagnr =10 then '2019-07-06' end where concat(waaunr,'-',waaupo) in ('408216-0', '408217-0', '408218-0') Wenn ich das richtig sehe, wird der Wert für die Spalten nicht erkannt. Sieht jemand was ich falsch mache und kann mir jemand einen Tip geben? Vielen Dank Patrick |
AW: Mehrfach Update STatement
Hallo,
fehlt vielleicht ein else? |
AW: Mehrfach Update STatement
Ich habe soeben herausgefunden, dass es an den zwei Bedingungen liegt
Delphi-Quellcode:
Hier mach er den Fehler
when concat(waaunr,'-',waaupo) ='408216-0' and oaagnr ='10' then '1'
Delphi-Quellcode:
Hier macht er den Fehler nicht.
when concat(waaunr,'-',waaupo) ='408216-0' then '1'
Leider hilft es nicht, wenn ich eine Klammer um die beiden Bedingungen mache...
Delphi-Quellcode:
Hat jemand dazu eine Idee?
update as400 set
sequence = case when (concat(waaunr,'-',waaupo) =408216-0 and oaagnr =10) then 1 when (concat(waaunr,'-',waaupo) =408217-0 and oaagnr =10) then 2 when (concat(waaunr,'-',waaupo) =408218-0 and oaagnr =10) then 3 end, frozen = case when (concat(waaunr,'-',waaupo) =408216-0 and oaagnr =10) then 1 when (concat(waaunr,'-',waaupo) =408217-0 and oaagnr =10) then 1 when (concat(waaunr,'-',waaupo) =408218-0 and oaagnr =10) then 0 end, plan_date = case when (concat(waaunr,'-',waaupo) =408216-0 and oaagnr =10) then '2019-07-05' when (concat(waaunr,'-',waaupo) =408217-0 and oaagnr =10) then '2019-07-05' when (concat(waaunr,'-',waaupo) =408218-0 and oaagnr =10) then '2019-07-06' end where concat(waaunr,'-',waaupo) in (408216-0, 408217-0, 408218-0) Vielen Dank Patrick |
AW: Mehrfach Update STatement
Hallo,
welchen Fehler, diesen SQL-Fehler von oben? oben steht and oaagnr =10 und unten and oaagnr ="10" Welchen Datentyp hat oaagnr? |
AW: Mehrfach Update STatement
Ja, immernoch der Fehler: Column 'sequence' cannot be null
Habe oben auch noch die Lösung mit den Klammern hinzugefügt, die leider den gleichen Fehler ergibt... Ich suche einen Weg, zwei Bedingungen in dem WHEN-Statement unter zu bekommen. Nehme ich das zweite (oaagnr=10) raus, funktioniert es... |
AW: Mehrfach Update STatement
Hallo,
zeig mal deine Klammern-Lösung. |
AW: Mehrfach Update STatement
OAAGNR ist ein Integer. Ich versuche gerade alle Varianten, die ich finden kann, daher der versehentliche Unterschied....
Die Fehlermeldung bleibt aber immer die gleiche Column 'sequence' cannot be null |
AW: Mehrfach Update STatement
Delphi-Quellcode:
update as400 set
sequence = case when (concat(waaunr,'-',waaupo) =408216-0 and oaagnr =10) then 1 when (concat(waaunr,'-',waaupo) =408217-0 and oaagnr =10) then 2 when (concat(waaunr,'-',waaupo) =408218-0 and oaagnr =10) then 3 end, frozen = case when (concat(waaunr,'-',waaupo) =408216-0 and oaagnr =10) then 1 when (concat(waaunr,'-',waaupo) =408217-0 and oaagnr =10) then 1 when (concat(waaunr,'-',waaupo) =408218-0 and oaagnr =10) then 0 end, plan_date = case when (concat(waaunr,'-',waaupo) =408216-0 and oaagnr =10) then '2019-07-05' when (concat(waaunr,'-',waaupo) =408217-0 and oaagnr =10) then '2019-07-05' when (concat(waaunr,'-',waaupo) =408218-0 and oaagnr =10) then '2019-07-06' end where concat(waaunr,'-',waaupo) in (408216-0, 408217-0, 408218-0) |
AW: Mehrfach Update STatement
Hallo,
when concat(waaunr,'-',waaupo) ='408216-0' and oaagnr =1 then '1' Du hast bei 408216-0 die Hochkommas vergessen. |
AW: Mehrfach Update STatement
Ich habe es jetzt so:
Delphi-Quellcode:
und so versucht
update as400 set
sequence = case when (concat(waaunr,'-',waaupo) ='408216-0' and oaagnr =10) then '1' when (concat(waaunr,'-',waaupo) ='408217-0' and oaagnr =10) then '2' when (concat(waaunr,'-',waaupo) ='408218-0' and oaagnr =10) then '3' end, frozen = case when (concat(waaunr,'-',waaupo) ='408216-0' and oaagnr =10) then '1' when (concat(waaunr,'-',waaupo) ='408217-0' and oaagnr =10) then '1' when (concat(waaunr,'-',waaupo) ='408218-0' and oaagnr =10) then '0' end, plan_date = case when (concat(waaunr,'-',waaupo) ='408216-0' and oaagnr =10) then '2019-07-05' when (concat(waaunr,'-',waaupo) ='408217-0' and oaagnr =10) then '2019-07-05' when (concat(waaunr,'-',waaupo) ='408218-0' and oaagnr =10) then '2019-07-06' end where concat(waaunr,'-',waaupo) in ('408216-0', '408217-0', '408218-0')
Delphi-Quellcode:
und so
update as400 set
sequence = case when (concat(waaunr,'-',waaupo) ='408216-0' and oaagnr =10) then 1 when (concat(waaunr,'-',waaupo) ='408217-0' and oaagnr =10) then 2 when (concat(waaunr,'-',waaupo) ='408218-0' and oaagnr =10) then 3 end, frozen = case when (concat(waaunr,'-',waaupo) ='408216-0' and oaagnr =10) then 1 when (concat(waaunr,'-',waaupo) ='408217-0' and oaagnr =10) then 1 when (concat(waaunr,'-',waaupo) ='408218-0' and oaagnr =10) then 0 end, plan_date = case when (concat(waaunr,'-',waaupo) ='408216-0' and oaagnr =10) then '2019-07-05' when (concat(waaunr,'-',waaupo) ='408217-0' and oaagnr =10) then '2019-07-05' when (concat(waaunr,'-',waaupo) ='408218-0' and oaagnr =10) then '2019-07-06' end where concat(waaunr,'-',waaupo) in ('408216-0', '408217-0', '408218-0')
Delphi-Quellcode:
Leider ist die Fehlermeldung immer die gleiche: Column 'sequence' cannot be null
update as400 set
sequence = case when concat(waaunr,'-',waaupo) ='408216-0' and oaagnr =10 then 1 when concat(waaunr,'-',waaupo) ='408217-0' and oaagnr =10 then 2 when concat(waaunr,'-',waaupo) ='408218-0' and oaagnr =10 then 3 end, frozen = case when concat(waaunr,'-',waaupo) ='408216-0' and oaagnr =10 then 1 when concat(waaunr,'-',waaupo) ='408217-0' and oaagnr =10 then 1 when concat(waaunr,'-',waaupo) ='408218-0' and oaagnr =10 then 0 end, plan_date = case when concat(waaunr,'-',waaupo) ='408216-0' and oaagnr =10 then '2019-07-05' when concat(waaunr,'-',waaupo) ='408217-0' and oaagnr =10 then '2019-07-05' when concat(waaunr,'-',waaupo) ='408218-0' and oaagnr =10 then '2019-07-06' end where concat(waaunr,'-',waaupo) in ('408216-0', '408217-0', '408218-0') |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:11 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz