Oracle 10g多个DELETE语句

时间:2011-02-10 18:13:45

标签: sql insert oracle10g sql-delete

我正在构建一个dml文件,该文件首先删除可能在表中的记录,然后插入记录。 例如:

DELETE from foo where field1='bar';
DELETE from foo where fields1='bazz';

INSERT ALL
 INTO foo(field1, field2) values ('bar', 'x')
 INTO foo(field1, field2) values ('bazz', 'y')
SELECT * from DUAL;

当我单独运行insert语句时,它运行正常。当我运行删除时,只运行最后一次删除。

另外,似乎有必要用select结束多次插入,是这样吗?如果是这样,为什么这是必要的? 在过去,当使用MySQL时,我只能列出多个删除和插入语句,所有这些都以分号结尾,并且运行正常。

2 个答案:

答案 0 :(得分:1)

您显然有拼写错误,因为您在DELETE中将其称为field1fields1

尽管如此,你正在努力做到这一点。

DELETE FROM Foo WHERE Field1 in ('bar', 'bazz');

INSERT INTO Foo (Field1, Field2) 
  SELECT 'bar', 'x' FROM System.dual UNION 
  SELECT 'bazz', 'y' FROM System.dual;

不确定Oracle是否需要FROM System.dual,虽然我似乎记得它确实如此。 SQL Server只允许SELECT 'bar', 'x'

答案 1 :(得分:1)

您不想要的任何特殊原因:

insert into foo(field1, field2) values('bar', 'x');
insert into foo(field1, field2) values('bazz', 'y');