I have the following generated column defined within a CREATE TABLE statement:
NET_ROWS_ADDED NUMBER(18) GENERATED ALWAYS AS (ROW_COUNT - PREV_ROW_COUNT) /*STORED*/,
ROW_COUNT and PREV_ROW_COUNT are simple NUMBER(18) columns previously defined in the same table.
Everything works fine as it's written.
But if I un-comment the STORED option, I get:
ORA-00907: missing right parenthesis
I need to convert this into a STORED generated column.
What is wrong with the syntax here? It all looks correct to me ...
Oracle doesn't store a virtual column on disk, it is only evaluate on demand. You are probably confused with the STORED option in MySQL. Since there is no STORED clause in Oracle, it throws a syntax error.
From documentation:
GENERATED ALWAYS
The optional keywords GENERATED ALWAYS are provided for semantic clarity. They indicate that the column is not stored on disk, but is evaluated on demand.
VIRTUAL
The optional keyword VIRTUAL is provided for semantic clarity.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With