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.