简体   繁体   中英

ORA-00917: missing comma on DATE column

I had come across many queries similar to the mentioned title. But my situation is quite different. I am trying to run the INSERT command for a table which has SELECT query to populate the column values. Below is the query I'm trying to execute.

INSERT INTO ELEC_ORDER_HT (OMS_SEQ.NEXTVAL, CUST_ID, ORDER_DATE, SHIP_METHOD,
  REC_CREN_TM, REC_HIST_CREN_TM AS '23-NOV-17 01.56.01.103000 AM', ORDER_ID) 
SELECT ELEC_ORDER.CUST_ID AS CUST_ID, ELEC_ORDER.ORDER_DATE AS ORDER_DATE,
  ELEC_ORDER.SHIP_METHOD AS SHIP_METHOD, ELEC_ORDER.REC_CREN_TM AS REC_CREN_TM,
  ELEC_ORDER.ORDER_ID AS ORDER_ID
FROM ELEC_ORDER
WHERE ELEC_ORDER.CUST_ID = 'CSTMR10001'
AND ELEC_ORDER.ORDER_ID = 'ELORD10001';

Number of column in ELEC_ORDER_HT and ELEC_ORDER tables are different. I got the following error when I executed the above query.

  REC_CREN_TM, REC_HIST_CREN_TM AS '23-NOV-17 01.56.01.103000 AM', ORDER_ID)
                                *
ERROR at line 2:
ORA-00917: missing comma

How can I resolve this issue?

INSERT INTO ELEC_ORDER_HT (
  OMS_SEQ.NEXTVAL, -- This does not appear to be a column name
  CUST_ID,
  ORDER_DATE,
  SHIP_METHOD,
  REC_CREN_TM,
  REC_HIST_CREN_TM AS '23-NOV-17 01.56.01.103000 AM', -- you cannot use aliases here
  ORDER_ID
)
SELECT ELEC_ORDER.CUST_ID AS CUST_ID,
       ELEC_ORDER.ORDER_DATE AS ORDER_DATE,
       ELEC_ORDER.SHIP_METHOD AS SHIP_METHOD,
       ELEC_ORDER.REC_CREN_TM AS REC_CREN_TM,
       ELEC_ORDER.ORDER_ID AS ORDER_ID         -- only 5 columns but 7 in the previous part
FROM   ELEC_ORDER
WHERE  ELEC_ORDER.CUST_ID = 'CSTMR10001'
AND    ELEC_ORDER.ORDER_ID = 'ELORD10001';

Is not valid. The syntax is:

INSERT INTO table_name ( column_name, column_name )
SELECT value, value FROM other_table

You appear to be trying to replace column names with constants/sequence values and then omitting those values from the SELECT statement.

You want something like:

INSERT INTO ELEC_ORDER_HT (
  OMS,                      -- or whatever the correct column name is
  CUST_ID,
  ORDER_DATE,
  SHIP_METHOD,
  REC_CREN_TM,
  REC_HIST_CREN_TM,
  ORDER_ID
)
SELECT OMS_SEQ.NEXTVAL,
       CUST_ID,
       ORDER_DATE,
       SHIP_METHOD,
       REC_CREN_TM,
       TIMESTAMP '2017-11-23 01.56.01.103000', -- or SYSTIMESTAMP if you want current time
       ORDER_ID
FROM   ELEC_ORDER
WHERE  CUST_ID = 'CSTMR10001'
AND    ORDER_ID = 'ELORD10001';

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM