최근 웹에서 백엔드로 SQL Server를 사용하여 SAP 인벤토리 정보를 동기화하는 전 동료가 프로젝트를 할당 받았습니다. 여기에는 XML 파일 생성과 관련된 부분이 있는데 여기에 내 딜레마가 놓여 있습니다. I가 수행해야하는 XML 구조에서는 nvarchar 키와 함께 ROW_NUMBER 사용
각 재고 항목 다소 같이, 숫자 ID와Message
요소에 포함되어
<Messages>
<Message>
<MessageID>1</MessageID>
<first item />
</Message>
<Message>
<MessageID>2</MessageID>
<second item />
</Message>
</Messages>
MessageID
필드는 행 번호 역할 : 그것은에서 증분 1을 결과 집합의 행 수로 나눕니다.
SELECT
ROW_NUMBER() OVER(ORDER BY items.ItemCode) MessageID,
items.ItemCode as SKU
FROM OITM items
FOR XML PATH('Message'), ROOT('Messages')
이
오류 숫자
주조에 데이터 유형 VARCHAR 변환 실패 : 문제는 테이블의 기본 키는 nvarchar
하지만 ROW_NUMBER() OVER(ORDER BY)
는 bigint
키가 필요하므로 다음 코드이며, 키에 거의 모든 행에 숫자가 아닌 문자가 포함되어 있기 때문에 ItemCode
~ bigint
을 사용할 수 없습니다. 테이블에 다른 키 필드가없고 수동으로 추가하는 것이 불가능합니다.
- 테이블에 5500 개 이상의 행이 있습니다.
- SAP는 SQL 백엔드에서
UPDATE
의 테이블을 지원하지 않으며 불일치가 발견되면 데이터베이스를 잠급니다.
XML 구조를 변경할 수 없습니다. 상대방의 API가 XML 구조를 허용하지 않기 때문입니다.
제 질문은 ROW_NUMBER()
에 nvarchar
키를 사용하는 방법이 있습니까? 또는 숫자가 아닌 키와 함께 작동하는 ROW_NUMBER()
의 대안은 무엇입니까?
방금 귀하의 코드를 시도했으며 필요한 XML을 생성하는 데 문제가 없으며 오류 메시지를 표시합니다. 샘플 데이터를 추가하면 도움이 될 것입니다. –
사용자가 질문에서 오류가 발생했기 때문에이 질문을 주제와 다르게 끝내기로 동의합니다. 그들의 대답을보십시오. –