2016-10-30 22 views
1

我試圖插入數據到現有的表中,但我得到一個錯誤。該表被定義如下。獲取一個錯誤ORA-00933:SQL命令沒有正確結束

ITEM_NUM CHAR(4)

說明CHAR(30)

ON_HAND NUMBER(4,0)

CATEGORY CHAR(3)

PRICE NUMBER(6,2)

這裏是SQL呈現錯誤

INSERT INTO NONGAME 
    VALUES ("CD33", "Wood Block Set (48 piece)",36,"TOY",89.49), 
       ("DL51", "Classic Railway Set", 12, "TOY", 107.95), 
       ("DR67","Giant Star Brain Teaser",24,"PZL",31.95), 
       ("FD11", "Rocking Horse",8,"TOY",124.95), 
       ("FH24","Puzzle Gift Set",65,"PZL",38.95), 
       ("KD34","Pentominoes Brain Teaser",60,"PZL",14.95), 
       ("MT03","Zauberkasten Brain Teaser",45,"PZL",45.79), 
       ("NL89", "Wood Block Set (62 piece)",32,"TOY",119.75), 
       ("TW35","Fire Engine",30,"TOY",118.95); 
+0

ummm ...你是不是錯過了'insert into'部分? – Mureinik

+0

有一個INSERT INTO NONGAME – Roger

+0

最後一次編輯非常讚賞 – Mureinik

回答

1

您需要更改語法以使用INSERT ALL並用單引號替換雙引號。

INSERT ALL 
    INTO NONGAME (ITEM_NUM, DESCRIPTION, ON_HAND, CATEGORY, PRICE) VALUES ('CD33', 'Wood Block Set (48 piece)',36,'TOY',89.49) 
    INTO NONGAME (ITEM_NUM, DESCRIPTION, ON_HAND, CATEGORY, PRICE) VALUES ('DL51', 'Classic Railway Set', 12, 'TOY', 107.95) 
    -- ADD AS MENU RECORDS AS YOU WANT HERE 
SELECT 1 FROM DUAL; 

被要求作爲INSERT ALLSELECT 1 FROM DUAL需要一個SELECT子查詢,這給僞數據的單個行。

INSERT ALL給出了個人的INSERT語句的性能提升,所以如果要插入多條記錄這樣肯定使用這個語法,而不是每次插入一個,見Oracle Insert All

關於您的評論:

「我得到ORA-00984:此處不允許列」

因爲在SQL中,雙引號用於數據庫對象名稱:文字需要單引號。 (代碼示例已更正以反映此事實。)

+0

非sugestions已經工作。 (「CD33」,「木塊組(48片)」,36,「玩具」,89.49);並且我得到ORA-00984:列不允許在這裏 – Roger

+0

再次嘗試一條記錄,但是這次明確地聲明瞭表列,例如, INTO NONGAME(ITEM_NUM,DESCRIPTION,ON_HAND,CATEGORY,PRICE) – CSL

+0

已解決問題。我將雙引號改爲單引號,並且工作正常。儘管如此,謝謝大家的意見。 – Roger

1

Oracle支持單引號而不是雙引號。試試這個:

INSERT INTO NONGAME 
    VALUES ('CD33', 'Wood Block Set (48 piece)',36,'TOY',89.49), 
       ('DL51', 'Classic Railway Set', 12, 'TOY', 107.95), 
       ('DR67','Giant Star Brain Teaser',24,'PZL',31.95), 
       ('FD11', 'Rocking Horse',8,'TOY',124.95), 
       ('FH24','Puzzle Gift Set',65,'PZL',38.95), 
       ('KD34','Pentominoes Brain Teaser',60,'PZL',14.95), 
       ('MT03','Zauberkasten Brain Teaser',45,'PZL',45.79), 
       ('NL89', 'Wood Block Set (62 piece)',32,'TOY',119.75), 
       ('TW35','Fire Engine',30,'TOY',118.95); 
+3

雖然這是真的,但Oracle不支持帶'values'子句的多行。 –

+0

那麼用單引號做這件事的最好方法是什麼? – Roger

相關問題