cwa*_*ole 12 oracle merge with-statement subquery-factoring ora-00928
我正在尝试使用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;
Run Code Online (Sandbox Code Playgroud)
我实际上发现了如何处理这个问题(在我提交问题之前),但我认为,因为我花了很长时间才找到答案,希望将这个问题留下来意味着下一个人会发现它不是那么很多时间.
我将在一天左右的时间内发布答案,但如果其他人在同一时间发布,他们将获得积分.
DCo*_*kie 27
您不能在SELECT语句中的任何位置使用WITH子句. 请参阅此处的文档.:
您可以在任何顶级SELECT语句和大多数类型的子查询中指定此子句.
所以,你可以做这样的事情(11g测试):
MERGE INTO animalia d
USING (WITH X AS
(SELECT 'moo' AS COW, 'woof' AS CAT,
(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';
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
26805 次 |
| 最近记录: |