2014-10-28 113 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