Error ORA-00933: SQL command not properly ended
Attempting to INSERT a row using the following cfscript statement:
q.setSQL("
INSERT INTO SALES_OPTION_CHOICE (SALES_CONFIG_OPTION_ID, DESCRIP, ISDEFAULT, CODE, SALES_CHOICE_ID, PRICE)
SELECT #r.SCOINDEX[i]#, sc.DESCRIP, #(data.isDefault == 'Y' ? "'Y'" : "NULL")#, sc.CODE, sc.ID, sc.PRICE
FROM SALES_CHOICE sc
WHERE sc.ID = #y.id[1]#
");
Results in
INSERT INTO SALES_OPTION_CHOICE (SALES_CONFIG_OPTION_ID, DESCRIP, ISDEFAULT, CODE, SALES_CHOICE_ID, PRICE)
SELECT 25628, sc.DESCRIP, 'Y', sc.CODE, sc.ID, sc.PRICE
FROM SALES_CHOICE sc
WHERE sc.ID = 222
Other variants that also fail with error ORA-00933:
INSERT INTO SALES_OPTION_CHOICE (SALES_CONFIG_OPTION_ID, DESCRIP, ISDEFAULT, CODE, SALES_CHOICE_ID, PRICE, SEQ)
SELECT 25628, DESCRIP, 'Y', CODE, ID, PRICE, NULL
FROM SALES_CHOICE
WHERE ID = 222
AND NOT ID in (
SELECT SALES_CHOICE_ID
FROM SALES_OPTION_CHOICE l
WHERE SALES_CONFIG_OPTION_ID = 25628
)
INSERT INTO SALES_OPTION_CHOICE (SALES_CONFIG_OPTION_ID, DESCRIP, ISDEFAULT, CODE, SALES_CHOICE_ID, PRICE, SEQ)
SELECT 25628, DESCRIP, 'Y', CODE, ID, PRICE, NULL
FROM SALES_CHOICE
WHERE ID = 222
INSERT INTO SALES_OPTION_CHOICE (SALES_CONFIG_OPTION_ID, DESCRIP, ISDEFAULT, CODE, SALES_CHOICE_ID, PRICE, SEQ)
SELECT 25628, DESCRIP, 'Y', CODE, ID, PRICE, NULL
FROM SALES_CHOICE
WHERE ID = 222
INSERT INTO SALES_OPTION_CHOICE (SALES_CONFIG_OPTION_ID, DESCRIP, ISDEFAULT, CODE, SALES_CHOICE_ID, PRICE)
SELECT 25628 SCOINDEX, DESCRIP, 'Y' ISDEFAULT, CODE, ID, PRICE
FROM SALES_CHOICE
WHERE ID = 222
INSERT INTO SALES_OPTION_CHOICE (SALES_CONFIG_OPTION_ID, DESCRIP, ISDEFAULT, CODE, SALES_CHOICE_ID, PRICE)
SELECT 25628 SCOINDEX, sc.DESCRIP, 'Y' ISDEFAULT, sc.CODE, sc.ID, sc.PRICE
FROM SALES_CHOICE sc
WHERE sc.ID = 222
INSERT INTO SALES_OPTION_CHOICE (SALES_CONFIG_OPTION_ID, DESCRIP, ISDEFAULT, CODE, SALES_CHOICE_ID, PRICE)
SELECT 25628 SCOINDEX, sc.DESCRIP, 'Y' ISDEFAULT, sc.CODE, sc.ID, sc.PRICE
FROM SALES_CHOICE sc
WHERE sc.ID = 222;
I'm sure the issue is some small oversight on my part. I've been battling this for hours now. I'd appreciate any insight.
SOLVED! Apparently INSERT statements need to be wrapped in BEGIN - END;
q.setSQL("
BEGIN
INSERT INTO SALES_OPTION_CHOICE (SALES_CONFIG_OPTION_ID, DESCRIP, ISDEFAULT, CODE, SALES_CHOICE_ID, PRICE)
SELECT #r.SCOINDEX[i]#, sc.DESCRIP, #(data.isDefault == 'Y' ? "'Y'" : "NULL")#, sc.CODE, sc.ID, sc.PRICE
FROM SALES_CHOICE sc
WHERE sc.ID = #y.id[1]#;
END;
");