我已阅读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关键字。
如果在另一个表中找到给定值,我想执行插入。
答案 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
语句