2017-01-24 18 views
2

Ошибка ORA-00933: команда SQL не правильно закончилсяOracle SQL Ошибка ORA-00933 на INSERT в Lucee

Попытка вставить строку, используя следующую cfscript заявление:

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]# 
"); 

Результаты в

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 

Другие варианты, которые также терпят неудачу с ошибкой 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; 

Я уверен, что проблема заключается в небольшом недосмотре с моей стороны. Я боролся с этим часами. Я был бы признателен за понимание.

+0

ORA-00933: команда SQL не правильно закончена, для тех, кто (как и я) не является ходячей энциклопедией сообщений об ошибках Oracle. @Teaspoon: пожалуйста, укажите полное сообщение об ошибке при задании вопросов на этом (или любом) форуме. – Boneist

+0

Опубликуйте свой стол DDL. Насколько я вижу, ваш оператор insert корректен. – XING

+1

'AND NOT ID в (..' следует изменить на 'AND id NOT in (...'. – JSapkota

ответ

0

РЕШЕННЫЙ! По-видимому, заявления INSERT должны быть завернуты в 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; 
");