获取错误ORA-00933:SQL命令未正确结束

时间:2016-10-30 06:45:32

标签: sql oracle

我试图将数据插入现有表但我收到错误。该表定义如下。

ITEM_NUM CHAR(4)

描述CHAR(30)

ON_HAND NUMBER(4,0)

CATEGORY CHAR(3)

价格编号(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);

2 个答案:

答案 0 :(得分: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;

SELECT 1 FROM DUAL是必需的,因为INSERT ALL需要SELECT子查询,这会产生一行虚拟数据。

  

INSERT ALL 提供了对单个插入语句的性能改进,因此如果要插入许多这样的记录,请务必使用此语法而不是一次插入一个,请参阅Oracle Insert All

关于你的评论:

  

"我得到ORA-00984:这里不允许列#34;

因为在SQL中,双引号用于数据库对象名称:文字需要单引号。 (更正了代码示例以反映这一事实。)

答案 1 :(得分: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);