Oracle-Update-Abfrage, fehlende SET-Schlüsselwort - ORA97100 & ORA-00904
Im immer eine verwirrend "ORA97100 fehlende SET-Schlüsselwort" Fehler beim ausführen dieses einfache UPDATE-Anweisung, obwohl Sie die "set" - Schlüsselwort gibt es:
UPDATE CURRENT_LOAD as ac
SET ac.LOAD_START_TIMESTAMP = CURRENT_TIMESTAMP
WHERE ac.LOAD_START_TIMESTAMP IS NULL;
Ich habe auch versucht, das gibt "ungültige Bezeichner ORA-00904 AC.LOAD_START_TIMESTAMP"
UPDATE CURRENT_LOAD ac
SET ac.load_start_timestamp = CURRENT_TIMESTAMP
WHERE ac.load_start_timestamp IS NULL;
Ich weiter versucht werden, das gibt wieder "Ungültiger Bezeichner ORA-00904 CURRENT_LOAD.LOAD_START_TIMESTAMP"
UPDATE CURRENT_LOAD
SET CURRENT_LOAD.load_start_timestamp = CURRENT_TIMESTAMP
WHERE CURRENT_LOAD.load_start_timestamp IS NULL;
Dies ist wirklich merkwürdig, da das Attribut "LOAD_START_TIMESTAMP" ist tatsächlich definiert, die in meiner Tabelle , siehe die "CURRENT_LOAD" table-DDL-unten:
CREATE TABLE "CURRENT_LOAD"
(
"LOAD_START_TIMESTAMP" TIMESTAMP with TIME ZONE,
"CONTRACT_NO" VARCHAR2(100 BYTE),
"PROJECT_DEFINITION" VARCHAR2(100 BYTE),
"MASTER_CONTRACT_NO" VARCHAR2(100 BYTE),
"Sac_CONTRACT_NO" VARCHAR2(100 BYTE)
);
Jede gut durchdachte beraten wird sehr geschätzt.
Dank
- In der letzten version Ihnen fehlt ein Punkt zwischen der Tabellen-und Spaltennamen in der where-Klausel.
CURRENT_LOADload_start_timestamp
->CURRENT_LOAD.load_start_timestamp
Ändern und es sollte funktionieren. Auch sollten Sie nicht brauchen, um specfiy den Ballen Namen in das set und where-Klauseln. Siehe sqlfiddle.com/#!4/2607c/1 - das anfängliche problem war die Verwendung von
AS
vor der Tabelle ein alias - dies ist nicht erlaubt. Zweitens - wenn Sie eine ORA-00904, wenn Sie versuchen, um Zugriff LOAD_START_TIMESTAMP, und der Spalte mit, dass die genauen Namen, dann erscheint Sie nicht die entsprechenden Berechtigungen, um diese Spalte. Sie müssen reden, um den DBA zu sehen, wenn Sie eine mehr detaillierte Erklärung dieser. Viel Glück. - Die zweite und die Dritte Abfrage (nun, Sie haben korrigiert, fehlende Periode) sind syntaktisch gültig. Sehen Sie diese SQL Fiddle: sqlfiddle.com/#!4/7527c/3 Wenn Sie bekommen eine Fehlermeldung, etwas über die Abfrage, die Sie tatsächlich ausführen (oder die Tabelle, die Sie tatsächlich ausgeführt werden) unterscheidet sich von der Tabelle und der Abfrage, die Sie hier gepostet. Die Tatsache, dass Sie mit groß-und Kleinschreibung von Bezeichnern lässt mich vermuten, dass in Ihrem code Sie haben versehentlich erstellt ein case-sensitive Bezeichner, die Sie versuchen zu Referenz in Ihrer
UPDATE
ohne umschließenden es in doppelte Anführungszeichen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen, das
UPDATE
- Anweisung ohne Tabelle aliasac
wieAuch, das problem ist mit
AS
vor Tabellen-alias. IhreUPDATE
- Anweisung Aussehen sollteSehen Oracle-Dokumentation für weitere Informationen.
AS
nachdem der name der Tabelle in Oracle.UPDATE
Aussage die du gepostet hast ist in Ordnung (da sind 2 von den 3UPDATE
Aussagen in der ursprünglichen Frage). Die syntax ist allerdings falsch, denn es zeigtAS
als optionale Stück syntax (true in Java-DB) wenn es nicht erlaubt ist, in Oracle.AS
vor Tabellen-alias. Danke für den Hinweis.