Oracle – WITH CLAUSE => MERGE? (语法错误,)

我正在尝试使用WITH子句在Oracle中使用合并,但由于某种原因我无法使其工作.我确信这是显而易见的,但我还没有看到它.
-- behold,the wonders of fake data
WITH X AS ( 
SELECT 
  'moo' AS COW,'woof' AS CAT,(SELECT MAX( DECIBELS ) FROM ANIMALIA WHERE COW = 'moo' ) AS DECIBELS
FROM DUAL )
MERGE INTO ANIMALIA D 
USING X
WHEN MATCHED THEN
    UPDATE SET D.COW = X.COW;

编辑

我实际上发现了如何处理这个问题(在我提交问题之前),但我认为,因为我花了很长时间才找到答案,希望将这个问题留下来意味着下一个人会发现它不是那么很多时间.

我将在一天左右的时间内发布答案,但如果其他人在同一时间发布,他们将获得积分.

您不能在SELECT语句中的任何位置使用WITH子句. See the documentation here.

You can specify this clause in any top-level SELECT statement and in
most types of subqueries.

所以,你可以做这样的事情(11g测试):

MERGE INTO animalia d
USING (WITH X AS 
       (SELECT  'moo' AS COW,(SELECT MAX( DECIBELS ) 
                   FROM ANIMALIA 
                  WHERE COW = 'moo' ) AS DECIBELS
          FROM DUAL )
       SELECT * FROM X) q ON (1 = 1)
 WHEN MATCHED THEN UPDATE SET d.cow = q.cow||' and more';

相关文章

Java Oracle 结果集是Java语言中处理数据库查询结果的一种方...
Java AES和Oracle AES是现代加密技术中最常使用的两种AES加密...
Java是一种广泛应用的编程语言,具备可靠性、安全性、跨平台...
随着移动互联网的发展,抽奖活动成为了营销活动中不可或缺的...
Java和Oracle都是在计算机领域应用非常广泛的技术,他们经常...
Java 是一门非常流行的编程语言,它可以运行于各种操作系统上...