시작?그 자체가 말 그대로 일반에 대한
일부 참조 링크를 테스트 한 다음, 작업 예에서 적응하는 동안,있다 : 중첩 기법으로 , 당신은 읽을 수/매우 관리 가능한 원소 조각
면책 조항에 브레이크 당신의 SQL을 할 수 관객
01 23,414,가장 간단한, 가장 낮은 수준의 중첩 된 노드 예를
는
DECLARE @NestedInput_SpecificDogNameId int
SET @NestedInput_SpecificDogNameId = 99
SELECT [dbo].[udfGetLowestLevelNestedNode_SpecificDogName]
(@NestedInput_SpecificDogNameId)
이의 있던 udfGetLowestLevelNestedNode_SpecificDogName는 XML에 대한 PATH 절없이 작성했던 가정 해 봅시다 다음 호출을 고려하고 @NestedInput_SpecificDogName = 99는 단일 행 집합 기록을 반환 :
@SpecificDogNameId DogName
99 Astro
그러나 XML에 대한 PATH 절을
,
,632,321 0 사용자 정의 함수는 다음과 같은 XML을 생성
합니다 (@ 기호는 SpecificDogNameId 필드 속성으로 반환됩니다)
<Dog SpecificDogNameId=99>Astro</Dog>
XML 형식의
중첩 사용자 정의 함수
사용자 - 위의 udfGetLowestLevelNestedNode_SpecificDogName과 같이 정의 된 함수는 복잡한 XML을 생성하는 강력한 방법을 제공하기 위해 중첩 될 수 있습니다. 예를 들어
, 기능
CREATE FUNCTION [dbo].[udfGetDogCollectionNode]()
RETURNS XML
AS
BEGIN
-- Declare the return variable here
DECLARE @ResultVar XML
-- Add the T-SQL statements to compute the return value here
SET @ResultVar =
(
SELECT
[dbo].[udfGetLowestLevelNestedNode_SpecificDogName]
(t.SpecificDogNameId)
FROM tblDogs t
FOR XML PATH('DogCollection') ELEMENTS
)
-- Return the result of the function
RETURN @ResultVar
END
(해당 기본 데이터 제공) 복잡한 XML 노드 여기에서
<DogCollection>
<Dog SpecificDogNameId="88">Dino</Dog>
<Dog SpecificDogNameId="99">Astro</Dog>
</DogCollection>
을 생산할 수
SELECT [dbo].[udfGetDogCollectionNode]()
로 호출 할 때 중첩 된 트리에서 위쪽으로 계속 작업하여 복잡한 XML 구조를 구현할 수 있습니다.,
CREATE FUNCTION [dbo].[udfGetAnimalCollectionNode]()
RETURNS XML
AS
BEGIN
DECLARE @ResultVar XML
SET @ResultVar =
(
SELECT
dbo.udfGetDogCollectionNode(),
dbo.udfGetCatCollectionNode()
FOR XML PATH('AnimalCollection'), ELEMENTS XSINIL
)
RETURN @ResultVar
END
SELECT [dbo].[udfGetAnimalCollectionNode]()
로 호출 할 때 UDF가 (적절한 기본 데이터 제공) 더 복잡한 XML 노드를 생성 할 수
<AnimalCollection>
<DogCollection>
<Dog SpecificDogNameId="88">Dino</Dog>
<Dog SpecificDogNameId="99">Astro</Dog>
</DogCollection>
<CatCollection>
<Cat SpecificCatNameId="11">Sylvester</Cat>
<Cat SpecificCatNameId="22">Tom</Cat>
<Cat SpecificCatNameId="33">Felix</Cat>
</CatCollection>
</AnimalCollection>