在没有源表的情况下合并Oracle SQL Developer

问题描述 投票:0回答:1

我试图将数据合并到一个数据库,我不能没有一个表,我不想创建一个临时表只是为了之后被删除

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它不适合我。

oracle sql-merge
1个回答
1
投票

Oracle仍然不支持标准的VALUES行构造函数。您需要使用select from dual的变通方法:

USING (
   select '0101-2019' as date, 1515 as random_data, 9595 as more_random_data
   from dual
) source
© www.soinside.com 2019 - 2024. All rights reserved.