2011-02-10 77 views
1

我正在構建一個dml文件,它首先刪除表中可能存在的記錄,然後插入記錄。 例子:Oracle 10g多個DELETE語句

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語句,它運行良好。當我運行刪除時,只有最後一次刪除運行。

此外,它似乎有必要結束多選插入,是這樣嗎?如果是這樣,爲什麼這是必要的? 在過去,當使用MySQL時,我可以列出多個刪除和插入語句,所有語句都以分號結尾,並且運行良好。

+0

刪除其中一部是對FIELD1一個條件,另一個在fields1。這將無法正常工作。 – btilly 2011-02-10 18:19:08

回答

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

你不希望任何特別的原因:

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