Reputation: 2994
Im getting a confusing "ORA97100 missing SET keyword" error when trying to run this simple UPDATE statement, although the "set" keyword is there:
UPDATE CURRENT_LOAD as ac
SET ac.LOAD_START_TIMESTAMP = CURRENT_TIMESTAMP
WHERE ac.LOAD_START_TIMESTAMP IS NULL;
I also tried, which gives "invalid identifier ORA-00904 AC.LOAD_START_TIMESTAMP"
UPDATE CURRENT_LOAD ac
SET ac.load_start_timestamp = CURRENT_TIMESTAMP
WHERE ac.load_start_timestamp IS NULL;
I further tried, which gives again "invalid identifier 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;
This is really odd since the attribute "LOAD_START_TIMESTAMP" is actually defined in my table , see the "CURRENT_LOAD" table DDL below:
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)
);
Any well thought advise will be appreciated.
Thanks
Upvotes: 0
Views: 16462
Reputation: 77934
Try running the UPDATE
statement without table alias ac
like
UPDATE CURRENT_LOAD
SET LOAD_START_TIMESTAMP = CURRENT_TIMESTAMP
WHERE LOAD_START_TIMESTAMP IS NULL;
Also, the problem is with AS
before table alias. Your UPDATE
statement should look like
UPDATE CURRENT_LOAD ac
SET ac.LOAD_START_TIMESTAMP = CURRENT_TIMESTAMP
WHERE ac.LOAD_START_TIMESTAMP IS NULL;
See Oracle documentation for more information.
Upvotes: 2