合并没有源表的Oracle SQL Developer

3

我正在尝试将数据合并到数据库中,但没有表格的话无法实现,我不想创建一个临时表再将其删除。

原始回答: "最初的回答"

MERGE INTO target_table target
USING ('0101-2019' as date, 1515 as random_data, 9595 as more_random_data) source
ON (target.date= source.date) 
WHEN MATCHED THEN
    UPDATE  SET target.date = source.date,  
                    target.random_data = source.random_data, 
                    target.more_random_data = source.more_random_data
WHEN NOT MATCHED THEN
    INSERT  (date,  random_data, more_random_data)
    VALUES (source.date,  source.random_data, source.more_random_data);

有一个方法本来是可以用的,但在使用Oracle SQL Developer时无法转换到Oracle。

最初的回答:

MERGE target_table AS target
USING   (VALUES ('0101-2019', 1515, 9595))
     AS source(date, random_data, more_random_data)
ON target.date= source.date
WHEN MATCHED THEN
    UPDATE  SET target.date = source.date,
                    target.random_data = source.random_data
                    target.more_random_data = source.more_random_data
WHEN NOT MATCHED BY target THEN
    INSERT  (date, random_data, more_random_data)
    VALUES (source.date, source.random_data, source.more_random_data)
WHEN NO TMATCHED BY source THEN
    DELETE

不要问我这段代码在哪里能够运作,这是我从自己的样本中编写的,以适应我的情况,但由于我使用Oracle的SQL Developer,它对我不起作用。

Original Answer翻译成"最初的回答"。

1个回答

5

Oracle仍不支持标准的VALUES行构造器。您需要使用select from dual的解决方法:

USING (
   select '0101-2019' as date, 1515 as random_data, 9595 as more_random_data
   from dual
) source

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接