ORA-00933:插入多行时SQL命令未正确结束

ORA-00933:插入多行时SQL命令未正确结束,sql,oracle,Sql,Oracle,我制作了一个脚本,从SQL数据生成insert语句。当我只插入insert的一行时,它会工作,但当我尝试插入多行时,我得到ORA-00933:SQL命令未正确结束以下是insert语句: 这本身就是有效的: INSERT INTO CAMPAIGN (CAMPAIGN_ID, SHOP_ID, CAMPAIGN_TYPE, SORT_ORDER, STATUS, VALID_FROM, VALID_TILL, CREATED_AT, MODIFIED_AT, CUSTOM_GRID_LAYOUT

我制作了一个脚本,从SQL数据生成insert语句。当我只插入insert的一行时,它会工作,但当我尝试插入多行时,我得到
ORA-00933:SQL命令未正确结束
以下是insert语句:

这本身就是有效的:

INSERT INTO CAMPAIGN (CAMPAIGN_ID, SHOP_ID, CAMPAIGN_TYPE, SORT_ORDER, STATUS, VALID_FROM, VALID_TILL, CREATED_AT, MODIFIED_AT, CUSTOM_GRID_LAYOUT_CSS, IMAGE_URL, KEY, SHOW_PRODUCTS_FILTER, MOBILE_APP_IMAGE_URL, LAYOUT_ID, SHOW_OWN_BRAND, VALIDATION_STATUS, CAMPAIGN_USAGE_ID, STORE_END_DATE, PAGING_ALLOWED, CAROUSEL_BUTTON_TEXT_COLOR, CAROUSEL_BUTTON_BG_COLOR, CAROUSEL_BUTTON1_LABEL, CAROUSEL_BUTTON1_URL, CAROUSEL_BUTTON2_LABEL, CAROUSEL_BUTTON2_URL, CAROUSEL_HTML_OVERLAY, MOBILE_APP_TEASER_URL, CAROUSEL_CLAIM_URL, CAROUSEL_HERO_URL, CAROUSEL_BOX_COLOR, AVOID_CAMPAIGN_NAV_TEASER, CAROUSEL_BUTTON1_NEW_TAB, CAROUSEL_BUTTON2_NEW_TAB, SALE_QUALIFICATION_ID, SALE_TARGET_CAMPAIGN) VALUES (CAMPAIGN_SEQ.nextval, 1, 'C', 0, 'A', to_date('2016-11-23', 'YYYY-MM-DD'), to_date('2116-11-23', 'YYYY-MM-DD'), to_date('2016-11-23', 'YYYY-MM-DD'), to_date('2018-07-02', 'YYYY-MM-DD'), null, null, null, 1, null, '5_COL', 0, null, 4, to_date('2116-11-23', 'YYYY-MM-DD'), 0, null, null, 'Artikel ab Mo., 02.12.', 'https://www.lidl.de', null, null, null, null, null, null, null, 0, 0, 0, null, 0);
现在,我向它添加另一行,用
字符分隔,并以
结束整个语句字符

INSERT INTO CAMPAIGN (CAMPAIGN_ID, SHOP_ID, CAMPAIGN_TYPE, SORT_ORDER, STATUS, VALID_FROM, VALID_TILL, CREATED_AT, MODIFIED_AT, CUSTOM_GRID_LAYOUT_CSS, IMAGE_URL, KEY, SHOW_PRODUCTS_FILTER, MOBILE_APP_IMAGE_URL, LAYOUT_ID, SHOW_OWN_BRAND, VALIDATION_STATUS, CAMPAIGN_USAGE_ID, STORE_END_DATE, PAGING_ALLOWED, CAROUSEL_BUTTON_TEXT_COLOR, CAROUSEL_BUTTON_BG_COLOR, CAROUSEL_BUTTON1_LABEL, CAROUSEL_BUTTON1_URL, CAROUSEL_BUTTON2_LABEL, CAROUSEL_BUTTON2_URL, CAROUSEL_HTML_OVERLAY, MOBILE_APP_TEASER_URL, CAROUSEL_CLAIM_URL, CAROUSEL_HERO_URL, CAROUSEL_BOX_COLOR, AVOID_CAMPAIGN_NAV_TEASER, CAROUSEL_BUTTON1_NEW_TAB, CAROUSEL_BUTTON2_NEW_TAB, SALE_QUALIFICATION_ID, SALE_TARGET_CAMPAIGN) VALUES 
(CAMPAIGN_SEQ.nextval, 1, 'C', 0, 'A', to_date('2016-11-23', 'YYYY-MM-DD'), to_date('2116-11-23', 'YYYY-MM-DD'), to_date('2016-11-23', 'YYYY-MM-DD'), to_date('2018-07-02', 'YYYY-MM-DD'), null, null, null, 1, null, '5_COL', 0, null, 4, to_date('2116-11-23', 'YYYY-MM-DD'), 0, null, null, 'Artikel ab Mo., 02.12.', 'https://www.lidl.de', null, null, null, null, null, null, null, 0, 0, 0, null, 0),
(CAMPAIGN_SEQ.nextval, 1, 'P', 0, 'A', to_date('2016-11-09', 'YYYY-MM-DD'), to_date('2116-11-09', 'YYYY-MM-DD'), to_date('2016-11-09', 'YYYY-MM-DD'), to_date('2018-07-02', 'YYYY-MM-DD'), null, null, null, 0, null, '4_COL_LEFT_NAV', 1, null, null, null, 1, null, null, null, null, null, null, null, null, null, null, null, 0, 0, 0, null, 0);

上面的那个会给我错误。如果我错了,请纠正我,但允许像这样插入多行,对吗?

如果您查看中的语法图,您将看到,在值的关闭参数后没有反向箭头

两种解决方案。两个
insert
s:

INSERT INTO CAMPAIGN (CAMPAIGN_ID, SHOP_ID, CAMPAIGN_TYPE, SORT_ORDER, STATUS, VALID_FROM, VALID_TILL, CREATED_AT, MODIFIED_AT, CUSTOM_GRID_LAYOUT_CSS, IMAGE_URL, KEY, SHOW_PRODUCTS_FILTER, MOBILE_APP_IMAGE_URL, LAYOUT_ID, SHOW_OWN_BRAND, VALIDATION_STATUS, CAMPAIGN_USAGE_ID, STORE_END_DATE, PAGING_ALLOWED, CAROUSEL_BUTTON_TEXT_COLOR, CAROUSEL_BUTTON_BG_COLOR, CAROUSEL_BUTTON1_LABEL, CAROUSEL_BUTTON1_URL, CAROUSEL_BUTTON2_LABEL, CAROUSEL_BUTTON2_URL, CAROUSEL_HTML_OVERLAY, MOBILE_APP_TEASER_URL, CAROUSEL_CLAIM_URL, CAROUSEL_HERO_URL, CAROUSEL_BOX_COLOR, AVOID_CAMPAIGN_NAV_TEASER, CAROUSEL_BUTTON1_NEW_TAB, CAROUSEL_BUTTON2_NEW_TAB, SALE_QUALIFICATION_ID, SALE_TARGET_CAMPAIGN)
    VALUES (CAMPAIGN_SEQ.nextval, 1, 'C', 0, 'A', to_date('2016-11-23', 'YYYY-MM-DD'), to_date('2116-11-23', 'YYYY-MM-DD'), to_date('2016-11-23', 'YYYY-MM-DD'), to_date('2018-07-02', 'YYYY-MM-DD'), null, null, null, 1, null, '5_COL', 0, null, 4, to_date('2116-11-23', 'YYYY-MM-DD'), 0, null, null, 'Artikel ab Mo., 02.12.', 'https://www.lidl.de', null, null, null, null, null, null, null, 0, 0, 0, null, 0);

INSERT INTO CAMPAIGN (CAMPAIGN_ID, SHOP_ID, CAMPAIGN_TYPE, SORT_ORDER, STATUS, VALID_FROM, VALID_TILL, CREATED_AT, MODIFIED_AT, CUSTOM_GRID_LAYOUT_CSS, IMAGE_URL, KEY, SHOW_PRODUCTS_FILTER, MOBILE_APP_IMAGE_URL, LAYOUT_ID, SHOW_OWN_BRAND, VALIDATION_STATUS, CAMPAIGN_USAGE_ID, STORE_END_DATE, PAGING_ALLOWED, CAROUSEL_BUTTON_TEXT_COLOR, CAROUSEL_BUTTON_BG_COLOR, CAROUSEL_BUTTON1_LABEL, CAROUSEL_BUTTON1_URL, CAROUSEL_BUTTON2_LABEL, CAROUSEL_BUTTON2_URL, CAROUSEL_HTML_OVERLAY, MOBILE_APP_TEASER_URL, CAROUSEL_CLAIM_URL, CAROUSEL_HERO_URL, CAROUSEL_BOX_COLOR, AVOID_CAMPAIGN_NAV_TEASER, CAROUSEL_BUTTON1_NEW_TAB, CAROUSEL_BUTTON2_NEW_TAB, SALE_QUALIFICATION_ID, SALE_TARGET_CAMPAIGN)
    VALUES (CAMPAIGN_SEQ.nextval, 1, 'P', 0, 'A', to_date('2016-11-09', 'YYYY-MM-DD'), to_date('2116-11-09', 'YYYY-MM-DD'), to_date('2016-11-09', 'YYYY-MM-DD'), to_date('2018-07-02', 'YYYY-MM-DD'), null, null, null, 0, null, '4_COL_LEFT_NAV', 1, null, null, null, 1, null, null, null, null, null, null, null, null, null, null, null, 0, 0, 0, null, 0);
或者,使用
选择
/
联合所有

INSERT INTO CAMPAIGN (CAMPAIGN_ID, SHOP_ID, CAMPAIGN_TYPE, SORT_ORDER, STATUS, VALID_FROM, VALID_TILL, CREATED_AT, MODIFIED_AT, CUSTOM_GRID_LAYOUT_CSS, IMAGE_URL, KEY, SHOW_PRODUCTS_FILTER, MOBILE_APP_IMAGE_URL, LAYOUT_ID, SHOW_OWN_BRAND, VALIDATION_STATUS, CAMPAIGN_USAGE_ID, STORE_END_DATE, PAGING_ALLOWED, CAROUSEL_BUTTON_TEXT_COLOR, CAROUSEL_BUTTON_BG_COLOR, CAROUSEL_BUTTON1_LABEL, CAROUSEL_BUTTON1_URL, CAROUSEL_BUTTON2_LABEL, CAROUSEL_BUTTON2_URL, CAROUSEL_HTML_OVERLAY, MOBILE_APP_TEASER_URL, CAROUSEL_CLAIM_URL, CAROUSEL_HERO_URL, CAROUSEL_BOX_COLOR, AVOID_CAMPAIGN_NAV_TEASER, CAROUSEL_BUTTON1_NEW_TAB, CAROUSEL_BUTTON2_NEW_TAB, SALE_QUALIFICATION_ID, SALE_TARGET_CAMPAIGN)
    SELECT CAMPAIGN_SEQ.nextval, 1, 'C', 0, 'A', to_date('2016-11-23', 'YYYY-MM-DD'), to_date('2116-11-23', 'YYYY-MM-DD'), to_date('2016-11-23', 'YYYY-MM-DD'), to_date('2018-07-02', 'YYYY-MM-DD'), null, null, null, 1, null, '5_COL', 0, null, 4, to_date('2116-11-23', 'YYYY-MM-DD'), 0, null, null, 'Artikel ab Mo., 02.12.', 'https://www.lidl.de', null, null, null, null, null, null, null, 0, 0, 0, null, 0
    FROM dual
    UNION ALL
    SELECT CAMPAIGN_SEQ.nextval, 1, 'P', 0, 'A', to_date('2016-11-09', 'YYYY-MM-DD'), to_date('2116-11-09', 'YYYY-MM-DD'), to_date('2016-11-09', 'YYYY-MM-DD'), to_date('2018-07-02', 'YYYY-MM-DD'), null, null, null, 0, null, '4_COL_LEFT_NAV', 1, null, null, null, 1, null, null, null, null, null, null, null, null, null, null, null, 0, 0, 0, null, 0
    FROM dual;
使用“全部插入”。 下面是一个例子

INSERT ALL  
  INTO suppliers (supplier_id, supplier_name) VALUES (20, 'Google')  
  INTO suppliers (supplier_id, supplier_name) VALUES (21, 'Microsoft')  
  INTO suppliers (supplier_id, supplier_name) VALUES (22, 'Apple')  

不,在Oracle中不允许这样插入多行。只需使用两个
insert
语句。在Oracle中从未见过多行插入。是的,这应该可以工作。我在过去的示例末尾添加了一个“SELECT*FROM dual;”,这只是因为我得到了一个语法错误,因为我认为这个语法需要一个SELECT。我以前写过: