我试图将数据插入现有表但我收到错误。该表定义如下。
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);
答案 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);