>

다음 코드를 디버깅하고 싶습니다 :

MERGE PlDayCap AS TGT
USING (SELECT MID, CalDate, SUM(CapAva) as aTime 
       FROM PSP 
       WHERE CalDate > DATEADD(DAY, -5, GETDATE()) 
       GROUP BY CalDate, MID) AS SRC(MID, cDate, aTime) ON (SRC.cDate = TGT.cDate AND SRC.MID = TGT.MID)
WHEN MATCHED 
    THEN  
       UPDATE SET TGT.aTime = SRC.aTime
WHEN NOT MATCHED BY TARGET
    THEN INSERT (cDate, MID, aTime, uTime) 
         VALUES (SRC.cDate, SRC.MID, SRC.aTime, 0)      
WHEN NOT MATCHED BY SOURCE
    THEN DELETE;

실행되지만 예상 결과를 반환하지 않습니다.

현재 목표 테이블이 비어 있으므로 NOT MATCHED BY TARGET  부분이 실행되어야하지만 작동하지 않으며 INSERT 때문인지 말할 수조차 없습니다.  문이 호출되지 않았거나이 문에 오류가있는 경우

보통 다음 SQL 디버깅 방법을 사용합니다 :

  • 데이터베이스 테이블에서 결과 확인
  • 우선 순위가 낮은 PRINT 또는 RAISEERROR
  • 데이터베이스 테이블에서 확인할 수 없지만 별도의 INSERT 문을 사용하여 실행시 읽고 로그 할 수있는 디버그 데이터를 확인하기위한 특수 테이블 DevelopmentLog입니다.
그러나 pyzwyz 내에서 사용할 수있는 것은 없습니다   MERGE 만 가질 수있는 조건 DELETE  또는 UPDATE  내가 아는 한, 정의 된 소스 및 대상 테이블에서만 작업하고 작업합니다.

SQL 디버깅 옵션이 좋지 않다는 것을 알고 있지만 방법을 찾고 싶습니다 ...

INSERT
  • 답변 # 1

    이 쿼리에서 SRC 테이블에 병합을 허용하는 유효한 레코드가 있는지 확인하십시오.

    OUTPUT 절을 MERGE와 함께 사용하면 결과가 실행되는 즉시 결과를 확인할 수 있습니다.

    와이즈 비즈

    OUTPUT Returns information from, or expressions based on, each row affected by an INSERT, UPDATE, DELETE, or MERGE statement. These results can be returned to the processing application for use in such things as confirmation messages, archiving, and other such application requirements.

    MERGE PlDayCap AS TGT USING (SELECT MID, CalDate, SUM(CapAva) as aTime FROM PSP WHERE CalDate > DATEADD(DAY,-5,GETDATE()) GROUP BY CalDate,MID) AS SRC(MID, cDate, aTime) ON (SRC.cDate = TGT.cDate AND SRC.MID = TGT.MID) WHEN MATCHED THEN UPDATE SET TGT.aTime = SRC.aTime WHEN NOT MATCHED BY TARGET THEN INSERT (cDate, MID, aTime, uTime) VALUES (SRC.cDate, SRC.MID, SRC.aTime, 0) WHEN NOT MATCHED BY SOURCE THEN DELETE OUTPUT $action, inserted.*, deleted.*;

  • 이전 자바 스크립트를 사용하여 URL에서 특정 ID를 얻는 방법
  • 다음 mongodb - 숫자 키 중첩 컬렉션