SQL Server 2008 R2에서 XML 값을 테이블로 읽으려고합니다.XML 매개 변수에서 테이블로의 SQL Server - 선택적 자식 노드로 작업
지금까지 여기입니다 : 당신이 볼 수 있듯이
DECLARE @XMLValue AS XML;
SET @XMLValue = '<SearchQuery>
<ResortID>1453</ResortID>
<CheckInDate>2011-10-27</CheckInDate>
<CheckOutDate>2011-11-04</CheckOutDate>
<Room>
<NumberOfADT>2</NumberOfADT>
<CHD>
<Age>10</Age>
</CHD>
<CHD>
<Age>12</Age>
</CHD>
</Room>
<Room>
<NumberOfADT>1</NumberOfADT>
</Room>
<Room>
<NumberOfADT>1</NumberOfADT>
<CHD>
<Age>7</Age>
</CHD>
</Room>
</SearchQuery>';
SELECT
Room.value('(NumberOfADT)[1]', 'INT') AS NumberOfADT
FROM @XMLValue.nodes('/SearchQuery/Room') AS SearchQuery(Room);
, Room
노드는 때때로 CHD
자식 노드를 얻을 수 있지만, 때로는하지 않습니다.
이 XML 값을 저장 프로 시저 매개 변수로 가져 오는 것으로 가정합니다. 그래서 데이터베이스 테이블을 쿼리하기 위해 값을 사용해야합니다. 이 XML 매개 변수를 완전히 읽는 가장 좋은 방법은 무엇입니까?
편집
나는 내가 여기 보답으로 기대하고 무엇을 표현할 필요가 있다고 생각합니다. 아래의 스크립트 코드는 내가 여기에 필요한 테이블입니다 : 내가 위에서 제공 가지고있는 XML 값
DECLARE @table AS TABLE(
ResorrtID INT,
CheckInDate DATE,
CheckOutDate DATE,
NumberOfADT INT,
CHDCount INT,
CHDAges NVARCHAR(100)
);
, 아래 삽입 T-SQL은 적합 :
INSERT INTO @table VALUES(1453, '2011-10-27', '2011-11-04', 2, 2, '10;12');
INSERT INTO @table VALUES(1453, '2011-10-27', '2011-11-04', 1, 0, NULL);
INSERT INTO @table VALUES(1453, '2011-10-27', '2011-11-04', 1, 1, '7');
CHDCount
Room
노드 아래
CHD
개입니다. 또한, 얼마나 많은 노드
Room
, 내가 가지고있는 많은 테이블 행. 그것을보고, 아래 그림을 보는 방법에 대한
으로
는 :사실,이 코드는 호텔 예약 검색 쿼리입니다. 그래서, 나는 테이블을 쿼리하기 위해 XML 파라미터에서 얻은이 값들과 함께 작업해야합니다. 및 사용 가능한 룸을 반환하십시오. 어쩌면 도움이 되었기 때문에 나는 이것을 말하고 있습니다. 너희들은 그것을보아야한다. 나는 방 예약 시스템에 대한 완전한 코드를 찾고 있지 않다. 그것은 너무 이기적입니다.
@marc_s 덕분에. 나는 그것이 여기 좋은 제목인지 확신하지 못한다. 더 나은 타이틀을 제공 할 수 있다면 pls로 자유롭게 변경하십시오. – tugberk
매개 변수의 대상 테이블을 어떻게 나타내시겠습니까? 자녀 정보에 관심이 있으십니까, 아니면 방마다 ADT 수를 줄이십니까? NumberofADT 자식 행 수입니까? –
필요한 출력을보다 명확하게 설명해 주시겠습니까? 필요한 값과 사용 방법은 무엇입니까? –