如何在Oracle中有条件地插入?

时间:2017-01-25 10:56:57

标签: sql oracle

我已阅读here,语法如下:

INSERT
WHEN ([Condition]) THEN
INTO [TableName] ([ColumnName])
VALUES ([VALUES])
ELSE
INTO [TableName] ([ColumnName])
VALUES ([VALUES])
SELECT [ColumnName] FROM [TableName];

但我不想提供另一张桌子的价值。我只想打字,所以我得到了:

INSERT 
WHEN EXISTS (SELECT 1 FROM FOO WHERE NAME = 'JOE') 
THEN
INTO BAR (NAME, AGE) 
VALUES ('JOE', 50)

这会产生异常:ORA-00928:缺少SELECT关键字。

如果在另一个表中找到给定值,我想执行插入。

2 个答案:

答案 0 :(得分:7)

使用选择也运行。但是值关键字

存在问题
INSERT 
WHEN EXISTS (SELECT 1 FROM FOO WHERE NAME = 'JOE') 
THEN
INTO BAR (NAME, AGE) 
SELECT 'JOE', 50 FROM DUAL

答案 1 :(得分:2)

所以,我发现了一种间接的方式here,我的问题的解决方案是:

INSERT INTO BAR (NAME, AGE) 
SELECT 'JOE', 50
  FROM DUAL
 WHERE EXISTS (SELECT 1 FROM FOO WHERE NAME = 'JOE')

但它没有解释为什么我必须在SELECT

中使用INSERT WHEN语句