programing

Oracle -- WITH CLOUSE => 병합?( 구문 오류, )

magicmemo 2023. 6. 20. 21:32
반응형

Oracle -- WITH CLOUSE => 병합?( 구문 오류, )

Oracle에서 병합할 WITH 절을 사용하려고 하는데 어떤 이유에서인지 작동이 되지 않습니다.저는 그것이 명백한 것이라고 확신하지만, 저는 단지 그것을 보지 못했습니다.

-- 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 절을 사용할 수 없습니다.여기에 있는 설명서를 참조하십시오.:

이 절은 모든 최상위 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';

언급URL : https://stackoverflow.com/questions/6673806/oracle-with-clause-merge-syntax-error

반응형