在oracle中插入多条记录
问题描述:
我正在使用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"
答
Oracle不支持多行插入。你需要写每行一个insert
:
INSERT INTO TABLE (USERID, USERNAME) VALUES (1,'ok1');
INSERT INTO TABLE (USERID, USERNAME) VALUES (2,'ok2');
此外:字符串文字需要被封闭在SQL 单引号。双引号是标识符。 "ok1"
是一个列名,'ok1'
是一个字符串常量。
答
不正是你想要的,但你可以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
这是mysql扩展插入语法。它不工作在任何地方,但MySQL。 – 2014-10-28 15:16:53
@MarcB:它也支持** SQL Server **版本** 2008 **和更新版本 – 2014-10-28 15:18:19
@marc_b:它实际上是ANSI SQL,与特定的DBMS无关 - 但并非所有的DBMS都支持它。而Oracle就是其中之一。 – 2014-10-28 15:18:58