2014-10-28 156 views
1

我正在使用oracle sql developer在我的數據庫中插入行。在oracle中插入多條記錄

雖然這個請求工作:

INSERT INTO TABLE (USERID, USERNAME) VALUES (1,"ok1") 

第二個(當我試圖插入多行)不工作:

INSERT INTO TABLE (USERID, USERNAME) VALUES (1,"ok1"),(2,"ok2") 

我收到此錯誤:

Erreur SQL : ORA-00933: SQL command not properly ended 
00933. 00000 - "SQL command not properly ended" 
+0

這是mysql擴展插入語法。它不工作在任何地方,但MySQL。 – 2014-10-28 15:16:53

+1

@MarcB:它也支持** SQL Server **版本** 2008 **和更新版本 – 2014-10-28 15:18:19

+0

@marc_b:它實際上是ANSI SQL,與特定的DBMS無關 - 但並非所有的DBMS都支持它。而Oracle就是其中之一。 – 2014-10-28 15:18:58

回答

0

Oracle不支持多行插入。你需要寫每行一個insert

INSERT INTO TABLE (USERID, USERNAME) VALUES (1,'ok1'); 
INSERT INTO TABLE (USERID, USERNAME) VALUES (2,'ok2'); 

此外:字符串文字需要被封閉在SQL 引號。雙引號是標識符。 "ok1"是一個列名,'ok1'是一個字符串常量。

2

不正是你想要的,但你可以minize一些努力與INSERT ALL

 
INSERT ALL 
    INTO mytable (column1, column2, column3) VALUES ('val1.1', 'val1.2', 'val1.3') 
    INTO mytable (column1, column2, column3) VALUES ('val2.1', 'val2.2', 'val2.3') 
    INTO mytable (column1, column2, column3) VALUES ('val3.1', 'val3.2', 'val3.3') 
SELECT * FROM dual; 

+0

我從來沒有說過或表現出任何優勢/劣勢。只是Oracle提供了一種對多個插入使用INSERT ALL語法的方法。我只是想與OP分享這一點。我希望OP得到它。如果你不喜歡它,然後downvote,讓我的理由,我會盡力澄清:-) – 2014-10-28 17:10:41

+0

我的朋友,好處是隻是努力少寫插入語句。 – 2014-10-28 17:37:24